`
to_zoe_yang
  • 浏览: 142421 次
  • 性别: Icon_minigender_2
  • 来自: 01
社区版块
存档分类
最新评论

天气小工具 <四>

阅读更多
希望天气显示界面如下

我选择使用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

    我的桌面日历(iDesktopCalendar)是一款简洁小巧的桌面提醒工具软件,&lt;br&gt;可以提供日期、时间、邮件以及天气等提醒功能。&lt;br&gt;&lt;br&gt;软件特色:&lt;br&gt;--电子日历可以显示西历和阴历,以及二十四节气和十二生肖。&lt;br&gt; 可以...

    Webservice入门教程_编写天气预报的webservice示例代码

    要创建天气预报Web服务,首先需要选择一个开发工具,如Java的Apache CXF或.NET的ASP.NET Web Services。以下是一个基本步骤概述: 1. 定义服务接口:定义一个接口,该接口声明提供天气预报所需的方法,例如`...

    Widget3.1中文技术手册

    - **应用范围**:适用于快速开发桌面小工具,如天气预报、新闻摘要、股票行情等。 #### 二、Widget Engine 架构与语法 - **XML语法**:Widget Engine使用XML作为描述语言。XML是一种标记语言,具备良好的结构化...

    天气API接口

    4. **农业生产辅助工具**:帮助农民根据天气变化安排农事活动。 总之,天气API接口作为一种重要的数据源,不仅为开发者提供了便捷的数据获取方式,也为各类应用提供了丰富的可能性。通过合理使用这些API,可以大大...

    微信小程序视频教程全集

    - **技术选型**:利用`wx.request`请求第三方天气API,使用`&lt;view&gt;`、`&lt;text&gt;`等基础组件展示天气信息。 - **实现步骤**: - 创建新项目,配置API接口。 - 编写页面逻辑代码,处理用户输入。 - 调用API获取天气...

    Google 小工具 API

    - `&lt;ModulePrefs&gt;`: 包含小工具的元数据,如标题。 - `&lt;Content type="html"&gt;`: 指定内容类型为HTML。 - `&lt;![CDATA[...]]&gt;`: 定义CDATA段落,用于包含HTML或JavaScript代码。 #### 六、小工具的组成部分 - **...

    weatherapp:天气预报应用

    2. 内容元素:利用&lt;h1&gt;至&lt;h6&gt;定义标题级别,&lt;p&gt;定义段落,&lt;img&gt;插入图片(如天气图标)。此外,&lt;a&gt;标签可以创建链接,让用户能分享当前天气信息到社交媒体。 二、天气信息展示 为了让用户快速获取天气信息,我们...

    前端学习路线-初级01

    #### 四、版本控制工具Git **Git**是一款分布式版本控制系统,它可以帮助团队成员高效地协同工作,并有效地管理代码版本。 - **核心知识点:** - Git基本命令:初始化仓库(`git init`)、添加文件(`git add`)...

    中国城市经纬度数据

    &lt;longitude&gt;116.4074&lt;/longitude&gt; &lt;latitude&gt;39.9042&lt;/latitude&gt; &lt;/city&gt; ... &lt;/cities&gt; ``` 每个`&lt;city&gt;`元素代表一个城市,包含城市名、经度和纬度。 四、GIS应用与分析 这样的数据可以用于以下场景: 1. ...

    探索发现html5网站模板是一款适合户外登山运动网站模板下载 .rar

    4. 交互功能:如行程规划工具、天气查询、论坛讨论区等,增强用户参与度。 5. 颜色与主题:模板设计应符合户外运动的风格,色彩鲜明,符合户外探险的氛围。 三、使用与定制 1. 解压文件:首先需要解压".rar"文件,...

    人工智能试验天气决策树.pdf

    #### 四、实验工具与材料 本实验使用的主要工具和材料包括: - **硬件设备**:1台个人电脑(PC)。 - **开发环境**:VISUAL C++ 6.0。 #### 五、实验方法与步骤 1. **数据加载**:使用标准C++库中的文件流类`std::...

    wap-jaba开发

    - 卡片、卡片组及其元素,如`&lt;wml&gt;`、`&lt;template&gt;`、`&lt;card&gt;`等,构成WML文档的基本单位。 - 任务元素,如`&lt;go&gt;`、`&lt;prev&gt;`、`&lt;refresh&gt;`等,控制页面跳转和刷新。 - 事件元素,如`&lt;do&gt;`、`&lt;ontimer&gt;`等,实现动态...

    微信小程序,天气预报查询

    - 小程序的组件化开发:使用微信提供的组件(如`&lt;view&gt;`, `&lt;text&gt;`, `&lt;image&gt;`等)构建用户界面,结合数据绑定和事件处理实现交互。 - 数据管理:采用单向数据流的模型,通过`Page`对象的`data`属性进行数据绑定和...

    微信小程序开发 WXML详解

    &lt;view class="title"&gt;欢迎使用微信小程序&lt;/view&gt; &lt;button bindtap="handleClick"&gt;点击我&lt;/button&gt; &lt;/view&gt; ``` ```javascript // pages/index/index.js Page({ data: { title: '首页' }, handleClick: ...

    api jdk jq js html

    HTML由一系列标签组成,如`&lt;html&gt;`、`&lt;head&gt;`、`&lt;body&gt;`、`&lt;p&gt;`、`&lt;a&gt;`等,它们告诉浏览器如何展示页面。HTML5引入了许多新特性,如离线存储、拖放功能、音频/视频支持等,极大地增强了网页的交互性和功能性。 这个...

    Weather_Dashboard

    5. 显示元素:根据天气信息,可以使用`&lt;h1&gt;`到`&lt;h6&gt;`的标题标签、`&lt;p&gt;`段落标签以及`&lt;ul&gt;`、`&lt;li&gt;`列表元素展示详细信息。 三、动态内容与API集成 天气仪表盘通常会通过调用API(Application Programming ...

    web期末作业设计网页.pdf

    - **定义**:使用`&lt;nav&gt;`和`&lt;footer&gt;`标签(或通过`&lt;div&gt;`标签加类名)创建导航栏和页脚。 - **实践意义**:导航栏和页脚是网页的重要组成部分,它们为用户提供浏览网站的途径。 - **案例分析**:导航栏通常包括主要...

    一个简单的旅游网站.zip

    通过使用`&lt;div&gt;`、`&lt;header&gt;`、`&lt;nav&gt;`、`&lt;section&gt;`和`&lt;footer&gt;`等标签,可以清晰地组织网页元素,使内容层次分明,易于理解和维护。 二、JavaScript动态交互 JavaScript是实现网页动态效果的关键,它使得用户与...

Global site tag (gtag.js) - Google Analytics