我完全新的在Java中使用的圖形用戶界面,所以我有一點麻煩搞清楚如何使我需要的一切。我要在我的JFrame面板,我需要對齊(其中一個向左,一個向右)和我需要在面板爲中心的面板之一幾個按鈕。這是我的代碼。我該如何調整在JPanels/JFrames元素?
package application;
import javax.swing.*;
import java.awt.event.*;
import java.awt.*;
import java.io.*;
import java.nio.*;
import java.util.*;
public class Main extends JPanel
{
public static void main(String[] args)
{
//set the ui to the native OS
try
{
UIManager.setLookAndFeel(UIManager.getSystemLookAndFeelClassName());
}catch(ClassNotFoundException | InstantiationException | IllegalAccessException
| UnsupportedLookAndFeelException e)
{
}
JFrame frame = new JFrame("Application Name");
Menu menu = new Menu();
JPanel iconPanel = new JPanel();
final JPanel grid = new JPanel(new FlowLayout());
JButton firewallButton = new JButton("Firewall");
JButton networkButton = new JButton("Network");
JButton printerButton = new JButton("Printer");
int iconPanelSizeX;
int iconPanelSizeY;
int gridSizeX;
int gridSizeY;
int gridPosition;
//frame setting
frame.setSize(800, 600);
frame.setMinimumSize(new Dimension(800, 600));
frame.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
frame.setLocationRelativeTo(null);
frame.setVisible(true);
//add grid and iconPanel JPanels to the frame
frame.add(iconPanel);
iconPanel.add(firewallButton);
iconPanel.add(networkButton);
iconPanel.add(printerButton);
frame.add(grid);
//iconPanel settings
iconPanel.setBorder(BorderFactory.createLoweredSoftBevelBorder());
iconPanel.setBackground(Color.gray);
iconPanel.setLayout(new FlowLayout());
iconPanel.setSize(new Dimension(100, 600));
iconPanel.setVisible(true);
//grid setting
grid.setBackground(Color.red);
grid.setSize(new Dimension(700, 600));
grid.setVisible(true);
//this is for resizing components when the user resizes the window
int counter = 0;
while(counter == 0)
{
firewallButton.setSize(new Dimension(iconPanel.getWidth(), 50));
networkButton.setSize(new Dimension(iconPanel.getWidth(), 50));
printerButton.setSize(new Dimension(iconPanel.getWidth(), 50));
iconPanelSizeX = frame.getWidth()/10;
iconPanelSizeY = frame.getHeight();
gridSizeX = (frame.getWidth()/10) * 9;
gridSizeY = frame.getHeight();
iconPanel.setSize(new Dimension(iconPanelSizeX, iconPanelSizeY));
grid.setSize(new Dimension(gridSizeX, gridSizeY));
}
}
}
正如你可以看到,第二的JPanel(網格)不與幀的右側排隊,和內部iconTray的按鈕不能任一中心。我意識到這些都可能是簡單的佈局修復,但我不知道從哪裏開始。
謝謝,這幫助了很多。實際上有一件事我忘了問,那就是如何垂直對齊按鈕 - 我必須稍後添加一些按鈕。 – user2067364 2013-02-17 23:07:33
用於'pack()'的+1;更多[這裏](http://stackoverflow.com/a/14927280/230513)。 – trashgod 2013-02-17 23:21:01
您將不得不使用其他佈局管理器。對於非常基本的對齊,你可以使用'GridLayout'或'BoxLayout',但對於更復雜的東西,我建議使用'GridBadLayout'或'MiGLayout'。只是谷歌。 – 2013-02-17 23:21:07