天气小工具 <四>

希望天气显示界面如下
[img]http://dl.iteye.com/upload/picture/pic/92538/1fb57bd5-2d1b-3163-b642-40dc29bc7414.bmp[/img]
我选择使用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);
}
}

全部代码我先上传了
继续优化
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值