就像我说的,当我点击JButton GR
时,JButton MN
被设置为默认大小(窗口大小)。
当程序启动时,JButton GR
的大小正确(200乘20),单击时菜单按钮也会以正确的大小显示(200乘20),但单击菜单按钮时{{1} }是默认大小。单击完整尺寸GR JButton
后,“菜单”按钮将以正确的尺寸重新显示。
我正在使用BlueJ(学校不允许使用其他IDE)。
GR JButton
答案 0 :(得分:2)
就像你说Jbutton GR是......
JFrame将BorderLayout作为API中的默认LayoutManager,
使用Java命名约定
使用LayoutManager而不是NullLayout和错误的方式
调用setVisible(真);应该是最后一行代码行,因为您有可能将所有JComponents添加到已经可见的容器中(例如鼠标重新绘制那些JComponents)
import java.awt.*;
import java.awt.event.*;
import javax.swing.*;
import javax.swing.JButton;
public class Main {
private JFrame myProgram1 = new JFrame("myProgram1");
private JButton myMN = new JButton("MENU");
private JButton myGR = new JButton("myGRC");
public Main() {
myGR.addActionListener(new ActionListener() {
@Override
public void actionPerformed(ActionEvent myGRH) {
myMN.setVisible(true);
myGR.setVisible(false);
}
});
myProgram1.add(myMN, BorderLayout.SOUTH);
myMN.addActionListener(new ActionListener() {
@Override
public void actionPerformed(ActionEvent myMNH) {
myMN.setVisible(false);
myGR.setVisible(true);
}
});
myProgram1.add(myGR, BorderLayout.NORTH);
myProgram1.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
myProgram1.pack();
myProgram1.setVisible(true);
}
public static void main(String args[]) {
SwingUtilities.invokeLater(new Runnable() {
@Override
public void run() {
new Main();
}
});
}
}