Java 我的JPanels没有';i don’我不想让他们出现
我试图使我的应用程序看起来像这样:Java 我的JPanels没有';i don’我不想让他们出现,java,swing,user-interface,jpanel,layout-manager,Java,Swing,User Interface,Jpanel,Layout Manager,我试图使我的应用程序看起来像这样: +----------------------------------------+ | panel1 | |+--------------------------------------+| || panel2 || |+--------------------------------------+| +----------------
+----------------------------------------+
| panel1 |
|+--------------------------------------+|
|| panel2 ||
|+--------------------------------------+|
+----------------------------------------+
+----------------------------------------+
| panel3 |
|+-----------++-----------++------------+|
|| panel4 || panel5 || panel6 ||
|+-----------++-----------++------------+|
+----------------------------------------+
但当我尝试做这件事时,我会得到这样的结果:
下面是我用来创建两个JPanel的代码,以及如何添加按钮和soo
//This is the panel that shows the image
appletRunningPanel = new ImagePanel();
appletRunningPanel.setSize(600, 300);
appletRunningPanel.validate();
//This is the panels that shows the 3 buttons
appletRunningPanel2 = new Panel(new GridLayout(1, 3));
appletRunningPanel2.setSize(600, 300);
appletRunningPanel2.add(test1);
appletRunningPanel2.add(test2);
appletRunningPanel2.add(test3);
appletRunningPanel2.validate();
//Then i add them to the applet with this:
add(appletRunningPanel);
add(appletRunningPanel2);
这是ImagePanel的代码
public class ImagePanel extends JPanel{
private BufferedImage image;
public ImagePanel() {
setSize(600, 300);
try {
image = ImageIO.read(getClass().getResourceAsStream("/res/TCHLogo.png"));
} catch (IOException ex) {
// handle exception...
System.out.println(ex);
}
}
@Override
public void paintComponent(Graphics g) {
super.paintComponent(g);
g.drawImage(image, 0, 0, null);
}
}
尝试添加一个中间JPanel i、 e
您需要更好地理解布局管理器。仔细查看并选择适合您需要的布局管理器 在底部面板上,GridLayout不考虑组件(JButtons)的首选大小,它使用grid部分中的所有可用空间
您可能需要为每个面板使用不同的布局管理器,为小程序框架使用另一个布局管理器。GridLayout将拉伸每个单元格中的组件以适应单元格的大小,如果要避免这种拉伸,请将按钮添加到另一个面板,并将该面板添加到
GridLayout
根据我的经验,用Java设计一个用户界面就是混合和匹配布局管理器,以实现您的总体目标。有一些简化的管理者,比如
例如,我会这样做:
+----------------------------------------+
| panel1 |
|+--------------------------------------+|
|| panel2 ||
|+--------------------------------------+|
+----------------------------------------+
+----------------------------------------+
| panel3 |
|+-----------++-----------++------------+|
|| panel4 || panel5 || panel6 ||
|+-----------++-----------++------------+|
+----------------------------------------+
有一个panel1
是您的panel2
并通过ImagePanel
panel1.add(panel2,BorderLayout.CENTER)添加到
代码>panel1
是您的panel3
GridLayout
、panel4
和panel5
都是默认设置(panel6
),每个FlowLayout
都包含三个按钮中的一个JPanel
BorderLayout
并通过getContentPane().add(panel1,BorderLayout.NORTH)添加panel1
将其添加到内容窗格中代码>和panel3
通过getContentPane()添加(panel3,BorderLayout.SOUTH)代码>
它并不完美,但会让你看起来更干净。为了让事情看起来更美好,你可以添加更多内容。我最喜欢的布局管理器之一是。1)将JButtons添加到包含Image?的JPanel中,2)您是否希望调整图像的大小+1发布创意无需创建6个不同的面板。只要两个就行了。首先创建图像面板,然后创建按钮面板。这只是让人困惑的事情。