我被困在这一段时间了。问题是我想将我的按钮移动到屏幕的右侧,但是当我使用borderlayout.east时它会移除我创建的另一个按钮。任何人都可以解释为什么会这样做,我该如何解决这个问题?
public static void main(String args[]){
GUI();
}
public static void GUI(){
handle handle = new handle();
JButton buy[] = new JButton[8];
_panel.setLayout(new BorderLayout());
for(int i = 0; i < buy.length; i++){
buy[i] = new JButton("Buy");
_panel.add(buy[i],BorderLayout.EAST);
}
_panel.setPreferredSize(new Dimension(600,600));
//_panel.add(buy, BorderLayout.EAST);
_frame.add(_panel);
_frame.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
_frame.setLocation(500, 100);
_frame.setResizable(false);
_frame.getContentPane();
_frame.pack();
_frame.setVisible(true);
}
}
答案 0 :(得分:2)
添加到布局会替换其他内容,您可能希望将一个Panel添加到东部,然后将按钮添加到其中,如下所示:
JPanel subPanel = new JPanel(new FlowLayout());
_panel.add(supPanel, BorderLayout.EAST);
for(int i = 0; i < buy.length; i++){
buy[i] = new JButton("Buy");
subPanel.add(buy[i]);
}
答案 1 :(得分:0)
根据#JavaDoc。
BORDER LAYOUT
边框布局布置一个容器,安排并调整其大小 适合五个地区的组成部分:北,南,东,西,和 中央。 每个区域可能包含不超过一个组件,并且是 由相应的常数识别:NORTH,SOUTH,EAST,WEST和 中心。
您要将所有JButtons
添加到JPanel
以东。
for(int i = 0; i < buy.length; i++){
buy[i] = new JButton("Buy");
_panel.add(buy[i],BorderLayout.EAST);<-------------
}
所以最后一个只能在东方看到。
那我应该怎么解决呢?
将所有按钮设置为JPanel
(例如GridLayout
)并将JPanel
添加到East
或其他JFrame
JPanel
}}
例如
JPanel myPanel=new JPanel();
myPanel.setLayout(new GridLayout(Button_array.length-1,1))
for(int i = 0; i < buy.length; i++){
buy[i] = new JButton("Buy");
_myPanel.add(buy[i]);
}
_panel.add(myPanel,BorderLayout.EAST)
答案 2 :(得分:0)