import java.awt.Dimension;
import java.awt.GridBagConstraints;
import java.awt.GridBagLayout;
import java.awt.event.ActionEvent;
import java.awt.event.ActionListener;
import javax.swing.BorderFactory;
import javax.swing.DefaultListModel;
import javax.swing.JButton;
import javax.swing.JFrame;
import javax.swing.JLabel;
import javax.swing.JList;
import javax.swing.JPanel;
import javax.swing.JTextField;
public class GridBagLayoutFrame extends JFrame {
private static final long serialVersionUID = 6819222900970457455L;
private JPanel mainPanel = new JPanel();
private JButton addButton = new JButton();
private JButton leftButton = new JButton();
private JButton rightButton = new JButton();
private JLabel label = new JLabel();
private JTextField field = new JTextField();
private DefaultListModel leftModel = new DefaultListModel();
private DefaultListModel rightMOdel = new DefaultListModel();
private JList leftList = new JList(leftModel);
private JList rightList = new JList(rightMOdel);
public GridBagLayoutFrame(String title) {
setTitle("GridBagLayoutFrameDemo");
setPreferredSize(new Dimension(600, 400));
setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
initComponent();
addData();
pack();
setVisible(true);
}
private static void createAndShowGUI() {
new GridBagLayoutFrame("GridBagLayoutFrameDemo");
}
private void initComponent() {
label.setText("添加选项:");
addButton.setText("添加");
leftList.setPreferredSize(new Dimension(150, 150));
rightList.setPreferredSize(leftList.getPreferredSize());
leftButton.setText("左");
rightButton.setText("右");
mainPanel.setBorder(BorderFactory.createTitledBorder("左右选择框"));
mainPanel.setLayout(new GridBagLayout());
GridBagConstraints c = new GridBagConstraints();
c.gridx = 0; // 0行0列
c.gridy = 0;
c.gridwidth = 1;
c.gridheight = 1;
c.fill = GridBagConstraints.HORIZONTAL;
c.weightx = 0;
c.weighty = 0;
mainPanel.add(label, c);
c.gridx++;
c.weightx = 1;
mainPanel.add(field, c);
c.gridx++;
c.weightx = 0;
c.gridwidth = 1;
c.gridheight = 1;
// c.fill = GridBagConstraints.HORIZONTAL;
mainPanel.add(addButton, c);
c.gridx = 0;
c.gridy = 1;
c.weightx = 1;
c.weighty = 1;
c.gridwidth = 2;
c.gridheight = 2;
c.fill = GridBagConstraints.BOTH;
mainPanel.add(leftList, c);
c.gridx = 2;
c.gridy = 1;
c.gridwidth = 1;
c.gridheight = 1;
c.weightx = 0;
c.weighty = 0.5;
c.anchor = GridBagConstraints.SOUTH;
c.fill = GridBagConstraints.HORIZONTAL;
mainPanel.add(leftButton, c);
c.gridx = 2;
c.gridy = 2;
c.anchor = GridBagConstraints.NORTH;
c.fill = GridBagConstraints.HORIZONTAL;
mainPanel.add(rightButton, c);
c.gridx = 3;
c.gridy = 1;
c.gridwidth = 1;
c.gridheight = 2;
c.weightx = 1;
c.weighty = 1;
c.fill = GridBagConstraints.BOTH;
mainPanel.add(rightList, c);
this.getContentPane().add(mainPanel);
}
private void addData() {
addButton.addActionListener(new ActionListener() {
public void actionPerformed(ActionEvent e) {
addItem();
}
});
leftButton.addActionListener(new ActionListener() {
public void actionPerformed(ActionEvent e) {
leftItem();
}
});
rightButton.addActionListener(new ActionListener() {
public void actionPerformed(ActionEvent e) {
rightItem();
}
});
}
private void addItem() {
if (field.getText() != null && !field.getText().equals("")) {
((DefaultListModel) leftList.getModel())
.addElement(field.getText());
field.setText("");
}
}
private void leftItem() {
if (rightList.getSelectedIndex() != -1) {
Object o = rightList.getSelectedValue();
((DefaultListModel) rightList.getModel()).remove(rightList
.getSelectedIndex());
((DefaultListModel) leftList.getModel()).addElement(o);
}
}
private void rightItem() {
if (leftList.getSelectedIndex() != -1) {
Object o = leftList.getSelectedValue();
((DefaultListModel) leftList.getModel()).remove(leftList
.getSelectedIndex());
((DefaultListModel) rightList.getModel()).addElement(o);
}
}
public static void main(String[] args) {
javax.swing.SwingUtilities.invokeLater(new Runnable() {
public void run() {
createAndShowGUI();
}
});
}
}
分享到:
相关推荐
#### 二、AWT提供的布局管理器类型 AWT提供了五种基本类型的布局管理器,每一种都有其独特的特性和应用场景: 1. **BorderLayout**:这是一种非常常用的布局管理器,它将容器划分为五个区域:北、南、东、西和中心...
基于java swing 开发的文件管理器: 采用苹果 ios 主题风格,支持环形进度条显示cpu利用率 GUI文件管理系统 1、实现文件夹创建、删除、进入。 2、实现当前文件夹下的内容罗列。 3、实现文件拷贝和文件夹拷贝...
2. CardLayout 布局管理器 CardLayout 布局管理器将加入到容顺中的组件视为卡片栈,把每个组件放置在一个单独的卡片上,而每次只能看见一张卡片。 3. FlowLayout 布局管理器 FlowLayout 布局管理器将组件从左到右...
基于Java Swing开发的资源管理器允许用户以类似操作系统文件管理器的方式浏览、操作文件和目录。 在这个项目中,“基于 Java Swing 开发的资源管理器”很可能是一个独立的应用程序,它实现了文件和目录的浏览、创建...
2. 读者管理:这部分主要是对读者信息进行管理,功能与用户管理类似,但可能包含更具体的信息,如借阅记录。Swing的组合框(JComboBox)可用于选择操作类型,文本组件(JTextField、JTextArea)用于输入或显示详细...
Java Swing登录资源管理器是一款基于Java Swing开发的桌面应用程序,其设计目的是为了帮助用户管理和存储各种网站、论坛或博客的登录信息。Swing是Java的标准GUI(图形用户界面)库,它提供了丰富的组件和功能,使得...
javaswing图书馆管理系统源代码+数据库模型 确保系统具有良好的系统性能,友好的用户界面。 较高的处理效率,便于使用和维护。 采用成熟技术开发,使系统具有较高的技术水平和较长的生命周期。 系统尽可能...
标题中的“用Swing做的H2管理器”指的是一个基于Java Swing图形用户界面(GUI)开发的工具,用于管理和操作H2数据库。H2是一个开源、轻量级、多模式的数据库系统,常用于测试、原型设计或者小型应用程序。Swing是...
Swing提供了丰富的组件和布局管理器,使得开发者能够灵活地构建出美观且功能齐全的界面。 系统的主要功能包括: 1. **宿舍管理**:支持宿舍的增删改操作,这需要后台数据库对宿舍信息进行存储和检索。例如,管理员...
本压缩包包含了11套完整的Java Swing管理系统源码,这些源码对于学习和理解Java GUI编程具有很高的价值。下面我们将深入探讨Java Swing的核心概念、特性以及在开发管理系统中的应用。 1. **Java Swing基本组件** -...
4. **数据库操作**:使用JDBC(Java Database Connectivity)接口,Swing管理器能够执行SQL语句,如SELECT、INSERT、UPDATE和DELETE,实现对H2数据库的基本操作。 5. **对话框和菜单**:Swing的JOptionPane和JMenu...
(2) 订单管理:管理员可以对订单进行录入、修改、查询和删除等操作,包括订单号、商品名称、数量等信息。 (3) 库存管理:管理员可以对库存进行管理,包括库存数量、进货、出货等操作。 (4) 系统管理:管理员可以对...
在实现功能时,Java Swing使用事件监听器(ActionListener)来响应用户的操作。例如,当用户点击“添加员工”按钮时,对应的ActionListener会被触发,执行添加新员工的逻辑。这一过程可能涉及从界面组件获取用户输入...
2. **事件处理**:Swing使用事件监听器来处理用户交互。例如,当用户点击一个按钮时,对应的ActionListener会被触发,执行相应的代码逻辑。开发者需要掌握如何添加和实现这些监听器。 3. **模型-视图-控制器(MVC)...
【酒店Swing管理系统】是一款基于Java Swing技术开发的软件,专为酒店行业的经营管理设计。Swing是Java标准库的一部分,提供了丰富的用户界面组件,用于构建桌面应用,它具有高度的可定制性和跨平台兼容性,使得该...
开发者通过自定义布局管理器和事件监听器,使得界面既符合用户习惯,又具有良好的响应性。 其次,Oracle是全球广泛使用的大型关系型数据库管理系统,以其强大的数据处理能力和稳定性著称。在这个图书管理系统中,...
Swing 提供了几种布局管理器,如 `FlowLayout`, `BorderLayout`, `GridLayout` 和 `BoxLayout`,用于控制组件在容器中的排列方式。开发者可能根据需求选择合适的布局管理器,确保界面元素排列整齐美观。 8. **...
2. **事件处理**:Swing支持事件驱动编程,用户与UI组件的交互会触发特定的事件。例如,点击按钮时会触发ActionListener事件,系统需要定义监听器来响应这些事件并执行相应的操作,如查询数据库或更新图书信息。 3....
7. **用户界面**:Swing提供的组件如JButton、JLabel、JTable等用于构建用户界面,通过布局管理器(如BorderLayout、GridLayout、FlowLayout)可以灵活地组织这些组件,使得界面美观且易于操作。 8. **事件处理**:...
Java Swing管理系统是一款基于Java编程语言开发的用户界面应用程序,它主要利用Swing库来构建图形用户界面(GUI),适用于创建桌面应用系统,如信息管理、数据处理等。这个管理系统为初学者提供了一个学习和实践Java...