首页 诗词 字典 板报 句子 名言 友答 励志 学校 网站地图
当前位置: 首页 > 教程频道 > 开发语言 > 编程 >

天候小工具 <四>

2012-11-19 
天气小工具 四希望天气显示界面如下我选择使用JList自然JList中的数据就是我们一天的天气状况啦~这就需

天气小工具 <四>
希望天气显示界面如下

我选择使用JList
自然JList中的数据就是我们一天的天气状况啦~
这就需要我们自定义ListCellRenderer然后使用setCellRenderer
最重要的是getListCellRendererComponent方法中的Object value
这是与我们的一天天气类对应的

public class MyListRenderer extends JPanel implements ListCellRenderer {

//private JList list = null;
private JLabel dayLabel = new JLabel();
private JPanel weatherPanel = new JPanel();
private JLabel baitianLabel = new JLabel("白天");
private JLabel hwLabel = new JLabel();
private JLabel htLabel = new JLabel();
private JLabel hwindLabel = new JLabel();
private JLabel hwindLevelLabel = new JLabel();
private JLabel yejianPanel = new JLabel("夜间");
private JLabel lwLabel = new JLabel();
private JLabel ltLabel = new JLabel();
private JLabel lwindLabel = new JLabel();
private JLabel lwindLevelLabel = new JLabel();

private Border selectedBorder = BorderFactory.createLineBorder(Color.ORANGE,
2);
private Border emptyBorder = BorderFactory.createEmptyBorder(1, 1, 1, 1);

public MyListRenderer() {
//this.list = list;
this.addMouseListener(this);
}

@Override
public Component getListCellRendererComponent(JList list, Object value,
int index, boolean isSelected, boolean cellHasFocus) {

Day day = (Day) value;
//String s = day.getDay() + "  "+day.getH_weather() + "  " + day.getLow() + "~" + day.getHigh();
//this.setText(s);
dayLabel.setText(day.getDay()+"日星期"+day.getWeek());
hwLabel.setText(day.getH_weather());
htLabel.setText(day.getHigh());
hwindLabel.setText("  "+day.getH_wind());
hwindLevelLabel.setText("  "+day.getH_wind_level());
lwLabel.setText(day.getH_weather());
ltLabel.setText(day.getLow());
lwindLabel.setText("  "+day.getL_wind());
lwindLevelLabel.setText("  "+day.getL_wind_level());

weatherPanel.setLayout(new GridLayout(2, 5));
weatherPanel.add(baitianLabel);
weatherPanel.add(hwLabel);
weatherPanel.add(htLabel);
weatherPanel.add(hwindLabel);
weatherPanel.add(hwindLevelLabel);
weatherPanel.add(yejianPanel);
weatherPanel.add(lwLabel);
weatherPanel.add(ltLabel);
weatherPanel.add(lwindLabel);
weatherPanel.add(lwindLevelLabel);

this.add(dayLabel, BorderLayout.WEST);
this.add(weatherPanel, BorderLayout.CENTER);
if (isSelected) {
setBorder(selectedBorder);
this.setOpaque(true);
this.setBackground(Color.GRAY);
} else {
setBorder(emptyBorder);
this.setOpaque(true);
this.setBackground(Color.WHITE);
}

return this;
}
}

JList类
public class WeatherList extends JList{

public WeatherList(){
this.setCellRenderer(new MyListRenderer());
}

public void setMyListData(Vector<Day> days){
this.setListData(days);
}
}

全部代码我先上传了
继续优化

热点排行