我不能告诉我如果我不知道这两件事是什么,而是从我收集到的东西,JFrame只是一个大开盒子,所以我想要做的就是打开那个大盒子可以说是Red,然后我制作了一个JPanel,我认为它是JFRAME的顶部,我试图让它变成灰色,所以我怎么能得到一个红框,左边是灰色条带。我也尝试将这些按钮垂直放在灰色的JPanel上,如果可能的话,它们都要拉伸到JPanel的宽度。
import java.awt.BorderLayout;
import java.awt.Color;
import java.awt.Component;
import java.awt.Container;
import java.awt.FlowLayout;
import java.awt.event.ActionEvent;
import java.awt.event.ActionListener;
import java.awt.event.MouseEvent;
import java.awt.event.MouseListener;
import javax.swing.BorderFactory;
import javax.swing.BoxLayout;
import javax.swing.JButton;
import javax.swing.JFrame;
import javax.swing.JMenu;
import javax.swing.JMenuBar;
import javax.swing.JMenuItem;
import javax.swing.JPanel;
public class Board extends JFrame implements MouseListener,ActionListener
{
public int x1, y1, x2, y2;
public Board()
{
JFrame frame = new JFrame();
frame.setSize(1200, 800);
Container con = frame.getContentPane();
con.setBackground(Color.RED);
addMouseListener(this);
frame.setVisible(true);
frame.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
JButton clear = new JButton("Clear");
clear.addActionListener(this);
JButton emptyR = new JButton("Empty Rectangle");
emptyR.addActionListener(this);
JPanel menu = new JPanel();
menu.setSize(200, 500);
BoxLayout layout = new BoxLayout(menu, BoxLayout.Y_AXIS);
menu.setLayout(layout);
menu.add(clear);
menu.add(emptyR);
//menu.setBackground(Color.black);
frame.add(menu);
JMenuBar menuBar = new JMenuBar();
frame.setJMenuBar(menuBar);
JMenu help = new JMenu("Help");
menuBar.add(help);
JMenuItem about = new JMenuItem("About");
help.add(about);
about.addActionListener(this);
}
public void mouseExited(MouseEvent evt){}
public void mouseEntered(MouseEvent evt){}
public void mouseClicked(MouseEvent evt){}
public void mousePressed(MouseEvent evt)
{
x1 = evt.getX();
y1= evt.getY();
}
public void mouseReleased(MouseEvent evt)
{
x2 =evt.getX();
y2=evt.getY();
}
public void actionPerformed(ActionEvent e)
{
}
}
答案 0 :(得分:2)
初看起来,只要扩展JFrame,就会自动生成JFrame。 Board 是一个JFrame,框架不是必需的。研究tutorial,尤其是Swing部分。
public class Board extends JFrame implements MouseListener,ActionListener {
public int x1, y1, x2, y2;
public Board() {
JFrame frame = new JFrame();
frame.setSize(1200, 800);
Container con = frame.getContentPane();
con.setBackground(Color.RED);
addMouseListener(this);
frame.setVisible(true);
frame.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
...
应该是:
public class Board extends JFrame implements MouseListener,ActionListener {
public int x1, y1, x2, y2;
public Board() {
setSize(1200, 800);
Container con = getContentPane();
con.setBackground(Color.RED);
addMouseListener(this);
setVisible(true);
setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
...
以下是NetBeans新增的通用JSplitPane方法:
public class NewJFrame1 extends javax.swing.JFrame {
/** Creates new form NewJFrame1 */
public NewJFrame1() {
initComponents();
}
/** This method is called from within the constructor to
* initialize the form.
* WARNING: Do NOT modify this code. The content of this method is
* always regenerated by the Form Editor.
*/
@SuppressWarnings("unchecked")
// <editor-fold defaultstate="collapsed" desc="Generated Code">
private void initComponents() {
jSplitPane1 = new javax.swing.JSplitPane();
jPanel1 = new javax.swing.JPanel();
jPanel2 = new javax.swing.JPanel();
setDefaultCloseOperation(javax.swing.WindowConstants.EXIT_ON_CLOSE);
jSplitPane1.setBorder(null);
jSplitPane1.setDividerLocation(100);
jSplitPane1.setDividerSize(1);
jSplitPane1.setEnabled(false);
jPanel1.setBackground(new java.awt.Color(153, 153, 153));
javax.swing.GroupLayout jPanel1Layout = new javax.swing.GroupLayout(jPanel1);
jPanel1.setLayout(jPanel1Layout);
jPanel1Layout.setHorizontalGroup(
jPanel1Layout.createParallelGroup(javax.swing.GroupLayout.Alignment.LEADING)
.addGap(0, 100, Short.MAX_VALUE)
);
jPanel1Layout.setVerticalGroup(
jPanel1Layout.createParallelGroup(javax.swing.GroupLayout.Alignment.LEADING)
.addGap(0, 300, Short.MAX_VALUE)
);
jSplitPane1.setLeftComponent(jPanel1);
jPanel2.setBackground(new java.awt.Color(255, 0, 0));
javax.swing.GroupLayout jPanel2Layout = new javax.swing.GroupLayout(jPanel2);
jPanel2.setLayout(jPanel2Layout);
jPanel2Layout.setHorizontalGroup(
jPanel2Layout.createParallelGroup(javax.swing.GroupLayout.Alignment.LEADING)
.addGap(0, 299, Short.MAX_VALUE)
);
jPanel2Layout.setVerticalGroup(
jPanel2Layout.createParallelGroup(javax.swing.GroupLayout.Alignment.LEADING)
.addGap(0, 300, Short.MAX_VALUE)
);
jSplitPane1.setRightComponent(jPanel2);
getContentPane().add(jSplitPane1, java.awt.BorderLayout.CENTER);
pack();
}// </editor-fold>
/**
* @param args the command line arguments
*/
public static void main(String args[]) {
/* Create and display the form */
java.awt.EventQueue.invokeLater(new Runnable() {
public void run() {
new NewJFrame1().setVisible(true);
}
});
}
// Variables declaration - do not modify
private javax.swing.JPanel jPanel1;
private javax.swing.JPanel jPanel2;
private javax.swing.JSplitPane jSplitPane1;
// End of variables declaration
}
您应该将setDividerLocation(n)配置为JFrame宽度的1/3。 jSplitPane1.setEnabled(false)使分区固定。