【发布时间】:2014-11-08 21:54:24
【问题描述】:
我似乎一辈子都无法弄清楚这一点。如果有多余的代码,请原谅,但我一直在尝试并无法弄清楚。 JFrame 出现,但按钮和标签未出现。
import javax.swing.*;
import java.awt.event.*;
import java.awt.*;
public class ex03 {
int w = 20;
int h = 20;
public ex03() {
JFrame fra = new JFrame("");
fra.setBounds(10, 10, 200, 200);
fra.setLayout(null);
fra.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
fra.setVisible(true);
JPanel pan = new JPanel();
pan.setLayout(null);
pan.setVisible(true);
fra.getContentPane().add(pan);
JLabel lab = new JLabel();
lab.setBounds(10, 10, w, h);
lab.setOpaque(true);
lab.setBackground(Color.blue);
lab.setVisible(true);
JButton but = new JButton("Play");
but.setBounds(10, 10, 100, 35);
but.addActionListener(new ActionListener() {
public void actionPerformed(ActionEvent e) {
w++;
h++;
}
});
but.setVisible(true);
pan.add(lab);
pan.add(but);
}
public static void main (String[] args) {
new ex03();
}
}
【问题讨论】:
-
fra.setLayout(null)是您问题的开始。避免使用null布局,像素完美的布局是现代 ui 设计中的一种错觉。影响组件单个尺寸的因素太多,您无法控制。 Swing 旨在与核心布局管理器一起工作,丢弃这些将导致无穷无尽的问题和问题,您将花费越来越多的时间来尝试纠正
标签: java swing user-interface jframe layout-manager