import javax.swing.*;
import java.awt.*;
public class MathsTutorProgram
{
public static void main(String[]args)
{
JFrame a = new JFrame(); //Create a blank window
JPanel panel = new JPanel(); //Create a panel
//Buttons
JLabel welcome = new JLabel("Welome to Maths Tutor!");
JButton lessThan = new JButton ("<");
JButton greaterThan = new JButton (">");
JButton equals = new JButton ("=");
JButton askMe = new JButton ("Ask me a question!");
//panels
panel.add(welcome);
panel.add(lessThan);
panel.add(greaterThan);
panel.add(equals);
panel.add(askMe);
a.setContentPane(panel); //Use panel on Window
//sets
a.setTitle("Maths Tutor Program"); //Change window title
a.setSize(300,200); //Change window size
a.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
a.setVisible(true);
//Border layout + Location
BorderLayout layout = new BorderLayout();
panel.setLayout(layout);
panel.add("North", welcome);
panel.add("East", equals);
panel.add("South", askMe);
panel.add("West", lessThan);
panel.add("Center", greaterThan);
}
}
我有工作java swing。我的&lt ;,&gt;和=按钮的大小不同。
中心按钮'='大于东'&gt;'按钮和西按钮'&lt;'。
我是否必须使用gridlayout或者仍然可以使用boarderlayout制作三个相同大小的中间按钮?
无论窗口大小如何,如何使这三个按钮的大小相同?
更新
//Border layout + Location
BorderLayout layout = new BorderLayout();
panel.setLayout(layout);
panel.add("North", welcome);
panel.add("South", askMe);
JPanel buttonPanel = new JPanel(new GridLayout(1,3));
buttonPanel.add(lessThan);
buttonPanel.add(equals);
buttonPanel.add(greaterThan);
panel.add(buttonPanel);
修正了代码 无论窗口大小如何,东,西和中心按钮(&lt;,&gt;和=)被平均到相同的大小。
答案 0 :(得分:1)
将三个按钮添加到一个面板。将该面板添加到中心。您使用的BorderLayout
不符合您要添加的按钮的首选大小。所以他们被拉长了。但是,如果您使用默认JPanel
将其添加到FlowLayout
,则按钮的首选大小将。另外,setVisible(true)
应该是你做的 last 。
panel.add(welcome, BorderLayout.NORTH);
panel.add(askMe, BorderLayout.SOUTH);
JPanel centerPanel = new JPanel();
centerPanel.add(lessThan);
centerPanel.add(greaterThan);
centerPanel.add(equals);
JPanel justToCenterPanel = new JPanel(new GridBagLayout());
justToCenterPanel.add(centerPanel);
panel.add(justToCenterPanel, BorderLayout.CENTER);
另请注意,不推荐使用您正在使用的add方法。请改用add(component, BorderLayout.CENTER)
答案 1 :(得分:0)
编辑:注意到你使用了BorderLayout太晚了。在这种情况下,请参阅上面的peeskillet答案(https://stackoverflow.com/a/21912257)
非常实用的解决方案就像
greaterThan.setPreferredSize(lessThan.getPreferredSize());
equals.setPreferredSize(lessThan.getPreferredSize());
使它们与lessThan
按钮一样大(或使用手动创建的自定义大小Dimension
)。但您还应该考虑其他LayoutManagers。默认值(FlowLayout
)没有太大的灵活性。在此示例中,您可以将三个按钮添加到JPanel buttonPanel = new JPanel(new GridLayout(1,3));
左右。
答案 2 :(得分:-2)
如果您使用Eclipse IDE, 添加WindowBuilder插件并选择绝对布局,然后根据需要设置布局。 WindowBuilder是拖放式ui组件插件。