JPanel面板的综合运用

package contain;

import java.awt.*;
import javax.swing.*;
public class Contain  extends JFrame 
{
    //面板 ,三块面板a、b、c, 三块面板可以用三种不同的布局
     JPanel mb1,mb2;
     JButton an1,an2,an3,an4,an5;
    public static void main(String[] args) 
    {
        Contain mm=new Contain();
        
    }
    Contain() //构造函数
    {
        //JFrame java默认边界布局
        mb1=new JPanel();  //JPanel默认是流式布局
        mb2=new JPanel();
        
        an1=new JButton("可乐");
        an2=new JButton("红茶");
        an3=new JButton("绿茶");
        an4=new JButton("啤酒");
        an5=new JButton("矿泉水");
        //添加组件时,先将jpanel面板上的组件添加完毕,再添加jframe
        mb1.add(an1);   mb1.add(an2);
        mb2.add(an3);   mb2.add(an4);     
        
        this.add(mb1,BorderLayout.SOUTH);
        this.add(mb2,BorderLayout.NORTH);
        this.add(an5);  //边界布局被添加在中间的组件,可以不写第二个参数,默认是在中间
        
        this.setTitle("综合布局应用");
        this.setSize(380,320);
        this.setLocation(200,220);
        //窗口界面不可以放大缩小
        this.setResizable(false);
        //这句一定要写对,因为这句写的对不对运行时看不出来
        this.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
        this.setVisible(true);
        
    }
}

以下是一个简单的Java月历程序,使用了Swing GUI库、ActionListener接口和Calendar类来实现。该程序可以根据用户输入的年份和月份生成并显示月历。 ```java import java.awt.BorderLayout; import java.awt.GridLayout; import java.awt.event.ActionEvent; import java.awt.event.ActionListener; import java.util.Calendar; import javax.swing.JButton; import javax.swing.JComboBox; import javax.swing.JFrame; import javax.swing.JLabel; import javax.swing.JPanel; public class CalendarApp implements ActionListener { private JFrame frame; private JPanel monthPanel, yearPanel, datePanel; private JLabel monthLabel, yearLabel; private JComboBox<String> monthBox, yearBox; private JButton updateButton; public CalendarApp() { // 创建主窗口 frame = new JFrame("月历"); frame.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE); frame.setSize(300, 300); // 创建月份选择面板 monthPanel = new JPanel(); monthLabel = new JLabel("月份:"); monthBox = new JComboBox<String>(); for(int i = 1; i <= 12; i++) { monthBox.addItem(String.valueOf(i)); } monthPanel.add(monthLabel); monthPanel.add(monthBox); // 创建年份选择面板 yearPanel = new JPanel(); yearLabel = new JLabel("年份:"); yearBox = new JComboBox<String>(); for(int i = 1900; i <= 2100; i++) { yearBox.addItem(String.valueOf(i)); } yearPanel.add(yearLabel); yearPanel.add(yearBox); // 创建日期显示面板 datePanel = new JPanel(new GridLayout(7, 7)); updateCalendar(Calendar.getInstance()); // 创建更新按钮 updateButton = new JButton("更新"); updateButton.addActionListener(this); // 将所有面板添加到主窗口中 frame.add(monthPanel, BorderLayout.NORTH); frame.add(yearPanel, BorderLayout.CENTER); frame.add(datePanel, BorderLayout.SOUTH); frame.add(updateButton, BorderLayout.EAST); // 显示主窗口 frame.setVisible(true); } // 更新月历 private void updateCalendar(Calendar cal) { datePanel.removeAll(); // 设置日期为当月1号 cal.set(Calendar.DAY_OF_MONTH, 1); // 获取当月第一天是星期几 int firstDayOfWeek = cal.get(Calendar.DAY_OF_WEEK); // 添加星期标签 String[] weekDays = {"日", "一", "二", "三", "四", "五", "六"}; for(int i = 0; i < weekDays.length; i++) { datePanel.add(new JLabel(weekDays[i], JLabel.CENTER)); } // 添加日期 for(int i = 1; i < firstDayOfWeek; i++) { datePanel.add(new JLabel("")); } int daysInMonth = cal.getActualMaximum(Calendar.DAY_OF_MONTH); for(int i = 1; i <= daysInMonth; i++) { datePanel.add(new JLabel(String.valueOf(i), JLabel.CENTER)); } frame.validate(); } // 处理更新按钮事件 public void actionPerformed(ActionEvent e) { if(e.getSource() == updateButton) { int year = Integer.valueOf((String) yearBox.getSelectedItem()); int month = Integer.valueOf((String) monthBox.getSelectedItem()) - 1; Calendar cal = Calendar.getInstance(); cal.set(year, month, 1); updateCalendar(cal); } } public static void main(String[] args) { new CalendarApp(); } } ``` 该程序包含三个面板:月份选择面板、年份选择面板和日期显示面板。月份和年份可以通过下拉框进行选择,日期显示面板根据用户选择的年份和月份显示当前月份的所有日期。用户可以点击“更新”按钮来更新月历。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值