📜  讨论SWING(1)

📅  最后修改于: 2023-12-03 15:28:06.635000             🧑  作者: Mango

讨论SWING

Swing是Java平台的一套GUI工具集,提供了许多用于创建图形用户界面(GUI)的组件和工具。Swing被设计成高度可定制,程序员可以使用它来创建各种各样的应用程序,从简单的工具到复杂的桌面应用程序。

组件

Swing提供了许多常见的组件,如按钮、文本框、标签、列表框、下拉框、复选框、单选按钮等等。除此之外,Swing还提供了一些高级组件,如表格、树形控件、轮廓组件等等。这些组件都可以自由组合,形成各种各样的可视化界面。

代码片段

下面是一个简单的Swing应用程序,包含一个按钮和一个文本框。

import javax.swing.*;

public class SimpleSwingApplication {
    public static void main(String[] args) {
        JFrame frame = new JFrame("Simple Swing Application");
        frame.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);

        JPanel panel = new JPanel();

        JButton button = new JButton("Click Me!");
        JTextArea textArea = new JTextArea(10, 30);

        button.addActionListener(e -> textArea.setText("Hello, Swing!"));

        panel.add(button);
        panel.add(textArea);

        frame.getContentPane().add(panel);
        frame.pack();
        frame.setVisible(true);
    }
}
布局管理器

Swing的布局管理器用于控制组件的位置和大小。Swing提供了多种布局管理器,包括FlowLayoutBorderLayoutGridLayoutBoxLayout等等。每种布局管理器都有其独特的特点和用途,程序员可以根据需求选择合适的布局管理器。

代码片段

下面是一个使用BorderLayout布局管理器的Swing应用程序,包含一个按钮和一个文本框。

import javax.swing.*;

public class BorderLayoutExample {
    public static void main(String[] args) {
        JFrame frame = new JFrame("BorderLayout Example");
        frame.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);

        JPanel panel = new JPanel(new BorderLayout());

        JButton button = new JButton("Click Me!");
        JTextArea textArea = new JTextArea(10, 30);

        button.addActionListener(e -> textArea.setText("Hello, Swing!"));

        panel.add(button, BorderLayout.PAGE_START);
        panel.add(textArea, BorderLayout.CENTER);

        frame.getContentPane().add(panel);
        frame.pack();
        frame.setVisible(true);
    }
}
渲染器

渲染器用于将数据转换为可视化组件。Swing提供了许多渲染器,包括DefaultListCellRendererDefaultTreeCellRendererDefaultTableCellRenderer等等。程序员可以自定义渲染器来满足特殊的需求。

代码片段

下面是一个使用自定义渲染器的Swing应用程序,包含一个列表框和一个文本框。列表框中显示了一组数据,其中偶数项使用默认渲染器,奇数项使用自定义渲染器。

import javax.swing.*;

public class RendererExample {
    public static void main(String[] args) {
        JFrame frame = new JFrame("Renderer Example");
        frame.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);

        JPanel panel = new JPanel();

        JList<String> list = new JList<>(new String[]{"Apple", "Banana", "Cherry", "Grape", "Lemon"});
        list.setCellRenderer(new EvenOddRenderer());

        JTextArea textArea = new JTextArea(10, 30);

        list.addListSelectionListener(e -> {
            String selectedItem = list.getSelectedValue();
            textArea.setText(selectedItem);
        });

        panel.add(new JScrollPane(list));
        panel.add(textArea);

        frame.getContentPane().add(panel);
        frame.pack();
        frame.setVisible(true);
    }
}

class EvenOddRenderer extends DefaultListCellRenderer {
    @Override
    public java.awt.Component getListCellRendererComponent(JList<?> list, Object value, int index, boolean isSelected, boolean cellHasFocus) {
        java.awt.Component renderer = super.getListCellRendererComponent(list, value, index, isSelected, cellHasFocus);
        if (index % 2 == 0) {
            renderer.setBackground(java.awt.Color.LIGHT_GRAY);
        } else {
            renderer.setBackground(java.awt.Color.WHITE);
        }
        return renderer;
    }
}
总结

Swing是Java平台的一套GUI工具集,可以用来创建各种各样的应用程序。Swing提供了许多常见的组件、布局管理器和渲染器,程序员可以根据需求选择合适的组件和工具。Swing还提供了高度可定制的特性,程序员可以自定义组件的样式、布局和渲染方式,满足特殊的需求。