JavaSwing界面组件与布局管理详解
立即解锁
发布时间: 2025-08-18 00:07:26 阅读量: 1 订阅数: 11 

### Java Swing 界面组件与布局管理详解
#### 1. 工具栏(Toolbars)
工具栏是一种按钮栏,可让用户快速访问程序中最常用的命令。其独特之处在于可以移动,你能将工具栏拖动到框架的四个边框之一,释放鼠标按钮后,工具栏会被放置到新位置,甚至还能完全从框架中分离出来,分离后的工具栏会包含在自己的框架中,关闭该框架时,工具栏会回到原框架。
##### 1.1 工具栏编程
以下是创建和使用工具栏的步骤及示例代码:
1. **创建工具栏**:
```java
JToolBar bar = new JToolBar();
```
2. **添加组件到工具栏**:
```java
bar.add(blueButton);
```
3. **添加 Action 对象**:
```java
bar.add(blueAction);
```
4. **添加分隔符**:
```java
bar.addSeparator();
```
5. **将工具栏添加到框架**:
```java
add(bar, BorderLayout.NORTH);
```
6. **指定工具栏标题**:
```java
bar = new JToolBar(titleString);
```
7. **创建垂直工具栏**:
```java
bar = new JToolBar(SwingConstants.VERTICAL);
// 或
bar = new JToolBar(titleString, SwingConstants.VERTICAL);
```
示例代码如下:
```java
package toolBar;
import java.awt.*;
import java.awt.event.*;
import javax.swing.*;
/**
* A frame with a toolbar and menu for color changes.
*/
public class ToolBarFrame extends JFrame {
private static final int DEFAULT_WIDTH = 300;
private static final int DEFAULT_HEIGHT = 200;
private JPanel panel;
public ToolBarFrame() {
setSize(DEFAULT_WIDTH, DEFAULT_HEIGHT);
// add a panel for color change
panel = new JPanel();
add(panel, BorderLayout.CENTER);
// set up actions
Action blueAction = new ColorAction("Blue", new ImageIcon("blue-ball.gif"), Color.BLUE);
Action yellowAction = new ColorAction("Yellow", new ImageIcon("yellow-ball.gif"), Color.YELLOW);
Action redAction = new ColorAction("Red", new ImageIcon("red-ball.gif"), Color.RED);
Action exitAction = new AbstractAction("Exit", new ImageIcon("exit.gif")) {
public void actionPerformed(ActionEvent event) {
System.exit(0);
}
};
exitAction.putValue(Action.SHORT_DESCRIPTION, "Exit");
// populate toolbar
JToolBar bar = new JToolBar();
bar.add(blueAction);
bar.add(yellowAction);
bar.add(redAction);
bar.addSeparator();
bar.add(exitAction);
add(bar, BorderLayout.NORTH);
// populate menu
JMenu menu = new JMenu("Color");
menu.add(yellowAction);
menu.add(blueAction);
menu.add(redAction);
menu.add(exitAction);
JMenuBar menuBar = new JMenuBar();
menuBar.add(menu);
setJMenuBar(menuBar);
}
/**
* The color action sets the background of the frame to a given color.
*/
class ColorAction extends AbstractAction {
public ColorAction(String name, Icon icon, Color c) {
putValue(Action.NAME, name);
putValue(Action.SMALL_ICON, icon);
putValue(Action.SHORT_DESCRIPTION, name + " background");
putValue("Color", c);
}
public void actionPerformed(ActionEvent event) {
Color c = (Color) getValue("Color");
panel.setBackground(c);
}
}
}
```
##### 1.2 JToolBar 类方法
| 方法 | 描述 |
| ---- | ---- |
| `JToolBar()` | 构造一个默认的工具栏 |
| `JToolBar(String titleString)` | 构造一个带有指定标题的工具栏 |
| `JToolBar(int orientation)` | 构造一个具有指定方向(水平或垂直)的工具栏 |
| `JToolBar(String titleString, int orientation)` | 构造一个带有指定标题和方向的工具栏 |
| `JButton add(Action a)` | 在工具栏中创建一个新按钮,并将其添加到工具栏末尾 |
| `void addSeparator()` | 在工具栏末尾添加一个分隔符 |
#### 2. 工具提示(Tooltips)
工具栏的一个缺点是用户常常对其中的小图标含义感到困惑,为解决这个问题,发明了工具提示。当光标在按钮上停留片刻时,工具提示文本会显示在一个彩色矩形中,鼠标移开后,工具提示消失。
##### 2.1 添加工具提示
在 Swing 中,可通过以下两种方式为组件添加工具提示:
1. **使用 `setToolTipText` 方法**:
```java
exitButton.setToolTipText("Exit");
```
2. **使用 Action 对象**:
```java
exitAction.putValue(Action.SHORT_DESCRIPTION, "Exit");
```
#### 3. 高级布局管理(Sophisticated Layout Management)
之前的示例应用仅使用了边界布局、流式布局和网格布局,对于更复杂的任务,这些布局方式是不够的。Java 布局管理器相较于 Windows 的布局管理方式有很大优势,Windows 的布局管理在组件大小改变时需要手动更新布局,而 Java 布局管理器会附带组件之间关系的说明。
以下是几种布局管理器的介
0
0
复制全文
相关推荐









