很难将JPanel添加到JFrame。我在Java上几乎全新,总是使用C ++ 我需要在一个框架内做4个面板。
这是我的代码,刚刚开始......
package project2;
import javax.swing.JOptionPane;
import java.awt.FlowLayout;
import javax.swing.JFrame;
import javax.swing.JLabel;
import javax.swing.JPanel;
import javax.swing.SwingConstants;
import java.awt.Color;
import java.awt.GridLayout;
import java.awt.BorderLayout;
import javax.swing.*;
import java.awt.Container;
import java.awt.Dimension;
public class GUI extends JFrame
{
private JPanel Checks; //Panel to Hold Checks
private JPanel Transactions;
private JPanel History;
private JPanel Graphics;
private JLabel CLabel;
public GUI()
{
super ( "UTB Check-In");
JPanel Checks = new JPanel(); //set up panel
CLabel = new JLabel("Label with text");
Checks.setBackground(Color.red);
Checks.setLayout( new BoxLayout(Checks,BoxLayout.LINE_AXIS));
add(Checks);
// JPanel Transactions = new JPanel();
// Transactions.setToolTipText("Electronic Transactions");
//Transactions.setBackground(Color.blue);
// add(Transactions);
}
}
我试图将交易和支票的一面放在另一边用不同的颜色,在这种情况下蓝色和红色它不会留在中间那些或那一个。 我的一位同事告诉我,BoxLayout(或任何布局)需要使用size..something来实现。我不确定自己一直在读书 http://docs.oracle.com/javase/tutorial/uiswing/layout/box.html
但我仍然没有完全理解。如果有人可以帮助我 谢谢!
答案 0 :(得分:2)
您的代码失败,因为您直接添加到默认JFrame
的{{1}}。您将BorderLayout
设置为错误的面板。
您必须BoxLayout
到您要添加的顶部组件(jframe),或者我更喜欢添加到jpanel而不是直接添加到jframe以完成您想要执行的操作。
示例:
setLayout()
顺便说一句,Java变量以lowerCase作为代码约定开始。