【发布时间】:2021-02-26 06:07:03
【问题描述】:
我正在制作项目(元素周期表)并且在 Swing 和 GridBagLayout 方面遇到了一点问题,即当我想要获得更大的按钮时,没有任何改变,或者我得到的按钮占据了我的所有屏幕。为什么?我怎样才能让它稍微大一点?以及如何将按钮设置为不在中心? 我的代码(我正在使用 Swing 和 GridBagLayout):
GridBagConstraints c = new GridBagConstraints();
JButton H,He,Li,Be,B,C,N,O,F,Ne;
public MyPanel() {
setPreferredSize(new Dimension(500,500));
setBackground(Color.GREEN);
setLayout(new GridBagLayout());
//Wodór
H=new JButton("H");
c.anchor=GridBagConstraints.FIRST_LINE_START;
c.weightx=1;
c.weighty=1;
c.gridwidth=2;
c.gridheight=2;
c.gridx=0;
c.gridy=0;
add(H,c);
//Hel
He=new JButton("He");
c.anchor=GridBagConstraints.FIRST_LINE_END;
c.gridx=34;
add(He,c);
//Lit
Li=new JButton("Li");
c.weighty=0;
c.gridx=0;
c.gridy=2;
add(Li,c);
//Beryl
Be=new JButton("Be");
c.gridx=2;
add(Be,c);
//Bar
B=new JButton("B");
c.gridx=24;
add(B,c);
//Węgiel
C=new JButton("C");
c.gridx=26;
add(C,c);
//Azot
N=new JButton("N");
c.gridx=28;
add(N,c);
//Tlen
O=new JButton("O");
c.gridx=30;
add(O,c);
//Fluor
F=new JButton("F");
c.gridx=32;
add(F,c);
//Neon
Ne=new JButton("Ne");
c.gridx=34;
add(Ne,c);
}
}
【问题讨论】:
-
更改 Swing 按钮大小的最佳方法:增加字体或图标的大小,或致电
setMargin(Insets)。 一般提示: 1) 请参阅 Should I avoid the use of set(Preferred|Maximum|Minimum)Size methods in Java Swing?(是。) 2) 请学习常见的 Java 命名法(命名约定 - 例如EachWordUpperCaseClass、firstWordLowerCaseMethod()、firstWordLowerCaseAttribute,除非它是UPPER_CASE_CONSTANT) .. -
.. 并始终如一地使用它。我猜这是元素周期表?同样的交易。 3)如需更好的帮助,请edit添加minimal reproducible example或Short, Self Contained, Correct Example。
-
我认为你误解了
GridBagConstraints中weightx和weighty的用途。在任何情况下,GridBagLayout 都会以其首选大小显示组件,除非您将 fill 设置为 BOTH。也许GridLayout 更合适?
标签: java swing jbutton layout-manager gridbaglayout