我用Java创建了一个Tic Tac Toe游戏,我似乎是一个问题,我无法摆脱:(。我无法重新调整我的按钮。我尝试了两个尝试setSize和setPreferredSize但似乎工作:
和代码:
import java.awt.Dimension;
import javax.swing.BorderFactory;
import javax.swing.BoxLayout;
import javax.swing.JButton;
import javax.swing.JCheckBox;
import javax.swing.JFrame;
import javax.swing.JLabel;
import javax.swing.JPanel;
import sun.org.mozilla.javascript.internal.xml.XMLLib.Factory;
public class TicTacToe {
JFrame frame;
JPanel contentPane;
JButton row1col1;
JButton row1col2;
JButton row1col3;
JButton row2col1;
JButton row2col2;
JButton row2col3;
JButton row3col1;
JButton row3col2;
JButton row3col3;
public TicTacToe() {
// TODO Auto-generated constructor stub
frame = new JFrame("Fds");
contentPane = new JPanel();
contentPane.setLayout(new BoxLayout(contentPane,BoxLayout.Y_AXIS));
row1col1 = new JButton();
row1col1.setPreferredSize(new Dimension(600,600));
contentPane.add(row1col1);
row1col2 = new JButton();
row1col2.setPreferredSize(new Dimension(600,600));
contentPane.add(row1col2);
frame.setContentPane(contentPane);
frame.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
frame.pack();
frame.setVisible(true);
}
private static void runGUI() {
JFrame.setDefaultLookAndFeelDecorated(true);
TicTacToe greeting = new TicTacToe();
}
public static void main(String[] args) {
/* Methods that create and show a GUI should be
run from an event-dispatching thread */
javax.swing.SwingUtilities.invokeLater(new Runnable() {
public void run() {
runGUI();
}
});
}
}
非常感谢你的帮助!
答案 0 :(得分:1)
BoxLayout尊重组件的最大大小。
在您的情况下,最大尺寸小于首选尺寸。
但是,解决方案不是使用首选/最大尺寸。
相反,您可以使用:
button.setMargin( new Insets(10, 10, 10, 10) );
控制按钮的大小,然后可以正常布局管理,因为首选大小将被正确计算。
答案 1 :(得分:1)
正如Camickr所述,BoxLayout尊重最大尺寸,但话虽如此,为什么要使用BoxLayout?相反,我建议:
例如,请在这里查看我的代码:Java: Drawing using Graphics outside the class which draws the main canvas使用程序员创建的ImageIcons并创建此GUI:
或者我的答案中的代码:How to wait for a MouseListener mouse press?使用字体大小来创建此GUI: