希望天气显示界面如下
我选择使用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);
}
}
全部代码我先上传了
继续优化
分享到:
相关推荐
我的桌面日历(iDesktopCalendar)是一款简洁小巧的桌面提醒工具软件,<br>可以提供日期、时间、邮件以及天气等提醒功能。<br><br>软件特色:<br>--电子日历可以显示西历和阴历,以及二十四节气和十二生肖。<br> 可以...
要创建天气预报Web服务,首先需要选择一个开发工具,如Java的Apache CXF或.NET的ASP.NET Web Services。以下是一个基本步骤概述: 1. 定义服务接口:定义一个接口,该接口声明提供天气预报所需的方法,例如`...
- **应用范围**:适用于快速开发桌面小工具,如天气预报、新闻摘要、股票行情等。 #### 二、Widget Engine 架构与语法 - **XML语法**:Widget Engine使用XML作为描述语言。XML是一种标记语言,具备良好的结构化...
4. **农业生产辅助工具**:帮助农民根据天气变化安排农事活动。 总之,天气API接口作为一种重要的数据源,不仅为开发者提供了便捷的数据获取方式,也为各类应用提供了丰富的可能性。通过合理使用这些API,可以大大...
- **技术选型**:利用`wx.request`请求第三方天气API,使用`<view>`、`<text>`等基础组件展示天气信息。 - **实现步骤**: - 创建新项目,配置API接口。 - 编写页面逻辑代码,处理用户输入。 - 调用API获取天气...
- `<ModulePrefs>`: 包含小工具的元数据,如标题。 - `<Content type="html">`: 指定内容类型为HTML。 - `<![CDATA[...]]>`: 定义CDATA段落,用于包含HTML或JavaScript代码。 #### 六、小工具的组成部分 - **...
2. 内容元素:利用<h1>至<h6>定义标题级别,<p>定义段落,<img>插入图片(如天气图标)。此外,<a>标签可以创建链接,让用户能分享当前天气信息到社交媒体。 二、天气信息展示 为了让用户快速获取天气信息,我们...
#### 四、版本控制工具Git **Git**是一款分布式版本控制系统,它可以帮助团队成员高效地协同工作,并有效地管理代码版本。 - **核心知识点:** - Git基本命令:初始化仓库(`git init`)、添加文件(`git add`)...
<longitude>116.4074</longitude> <latitude>39.9042</latitude> </city> ... </cities> ``` 每个`<city>`元素代表一个城市,包含城市名、经度和纬度。 四、GIS应用与分析 这样的数据可以用于以下场景: 1. ...
4. 交互功能:如行程规划工具、天气查询、论坛讨论区等,增强用户参与度。 5. 颜色与主题:模板设计应符合户外运动的风格,色彩鲜明,符合户外探险的氛围。 三、使用与定制 1. 解压文件:首先需要解压".rar"文件,...
#### 四、实验工具与材料 本实验使用的主要工具和材料包括: - **硬件设备**:1台个人电脑(PC)。 - **开发环境**:VISUAL C++ 6.0。 #### 五、实验方法与步骤 1. **数据加载**:使用标准C++库中的文件流类`std::...
- 卡片、卡片组及其元素,如`<wml>`、`<template>`、`<card>`等,构成WML文档的基本单位。 - 任务元素,如`<go>`、`<prev>`、`<refresh>`等,控制页面跳转和刷新。 - 事件元素,如`<do>`、`<ontimer>`等,实现动态...
- 小程序的组件化开发:使用微信提供的组件(如`<view>`, `<text>`, `<image>`等)构建用户界面,结合数据绑定和事件处理实现交互。 - 数据管理:采用单向数据流的模型,通过`Page`对象的`data`属性进行数据绑定和...
<view class="title">欢迎使用微信小程序</view> <button bindtap="handleClick">点击我</button> </view> ``` ```javascript // pages/index/index.js Page({ data: { title: '首页' }, handleClick: ...
HTML由一系列标签组成,如`<html>`、`<head>`、`<body>`、`<p>`、`<a>`等,它们告诉浏览器如何展示页面。HTML5引入了许多新特性,如离线存储、拖放功能、音频/视频支持等,极大地增强了网页的交互性和功能性。 这个...
5. 显示元素:根据天气信息,可以使用`<h1>`到`<h6>`的标题标签、`<p>`段落标签以及`<ul>`、`<li>`列表元素展示详细信息。 三、动态内容与API集成 天气仪表盘通常会通过调用API(Application Programming ...
- **定义**:使用`<nav>`和`<footer>`标签(或通过`<div>`标签加类名)创建导航栏和页脚。 - **实践意义**:导航栏和页脚是网页的重要组成部分,它们为用户提供浏览网站的途径。 - **案例分析**:导航栏通常包括主要...
通过使用`<div>`、`<header>`、`<nav>`、`<section>`和`<footer>`等标签,可以清晰地组织网页元素,使内容层次分明,易于理解和维护。 二、JavaScript动态交互 JavaScript是实现网页动态效果的关键,它使得用户与...