javax.swing中的默认JButton*
当我在JavaSwing中编译代码时,我得到了默认边界。占据整个帧大小的按钮。我试了3个按钮。首先,我得到了最后一个按钮作为默认值,然后我删除了最后一个按钮,我得到了两个按钮中的下一个按钮像前面一样得到了默认值。请帮我解决这个问题 !!() 预期结果:在第3帧中,按钮将并排出现。javax.swing中的默认JButton*,java,swing,jbutton,Java,Swing,Jbutton,当我在JavaSwing中编译代码时,我得到了默认边界。占据整个帧大小的按钮。我试了3个按钮。首先,我得到了最后一个按钮作为默认值,然后我删除了最后一个按钮,我得到了两个按钮中的下一个按钮像前面一样得到了默认值。请帮我解决这个问题 !!() 预期结果:在第3帧中,按钮将并排出现。 实际结果:默认为一个按钮。在设置布局管理器之前,您正在调用f.setVisible(true),因此GUI将使用JFrame的默认BorderLayout显示,这意味着只显示最后添加的组件 一个糟糕的解决方案是先设置布
实际结果:默认为一个按钮。在设置布局管理器之前,您正在调用
f.setVisible(true)
,因此GUI将使用JFrame的默认BorderLayout显示,这意味着只显示最后添加的组件
一个糟糕的解决方案是先设置布局
更好的解决方案是学习并适当地使用布局管理器
非常感谢你,我知道了。
import javax.swing.*;
class rough{
public static void main(String args[]){
JFrame f=new JFrame("new");
JButton b1=new JButton("click");
JButton b2=new JButton("Hello");
JButton b3=new JButton("like");
b1.setBounds(20,20,100,50);
b2.setBounds(120,20,100,50);
b3.setBounds(220,20,100,50);
f.add(b1);
f.add(b2);
f.add(b3);
f.setSize(600,600);
f.setVisible(true);
f.setLayout(null);
}
}
import java.awt.Dimension;
import java.awt.Font;
import java.awt.GridBagLayout;
import java.awt.GridLayout;
import javax.swing.*;
@SuppressWarnings("serial")
public class Rough2 extends JPanel {
private static final int P_WIDTH = 600;
private static final int P_HEIGHT = 400;
public Rough2() {
JPanel buttonPanel = new JPanel(new GridLayout(1, 0, 8, 8));
String[] buttonNames = { "Click", "Hello", "Like" };
for (String buttonName : buttonNames) {
JButton button = new JButton(buttonName);
int mnemonic = (int) buttonName.charAt(0);
button.setMnemonic(mnemonic);
button.setFont(button.getFont().deriveFont(Font.BOLD, 24f));
buttonPanel.add(button);
}
setLayout(new GridBagLayout());
add(buttonPanel);
setPreferredSize(new Dimension(P_WIDTH, P_HEIGHT));
}
private static void createAndShowGui() {
Rough2 mainPanel = new Rough2();
JFrame frame = new JFrame("Rough2");
frame.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
frame.getContentPane().add(mainPanel);
frame.pack();
frame.setLocationRelativeTo(null);
frame.setVisible(true);
}
public static void main(String[] args) {
SwingUtilities.invokeLater(() -> createAndShowGui());
}
}