我在主框架內有三個JPanel。從左側開始順時針方向,在第一個面板中,我計劃使用一些控件來指定面板2上的圖形。第三個底部面板將顯示一些信息。在多個JPanel中繪製
我的理解是,我必須重寫paintComponent,以便可以在第二個面板上實現所需的效果。現在我只想測試它,我是否可以在此面板上繪製簡單的文本。
但實際上,我在三個面板中的任何一個面板上都有問題。
代碼如下,我不知道是什麼問題。
public class Demo extends JFrame{
private JSplitPane splitPaneV;
private JSplitPane splitPaneH;
private JPanel panel1;
private JPanel panel2;
private JPanel panel3;
public Demo(String string) {
// TODO Auto-generated constructor stub
setTitle(string);
setBackground(Color.gray);
JPanel topPanel = new JPanel();
topPanel.setLayout(new BorderLayout());
getContentPane().add(topPanel);
// Create the panels
new MyJPanel1();
new MyJPanel2();
new MyJPanel3();
// Create a splitter pane
splitPaneV = new JSplitPane(JSplitPane.VERTICAL_SPLIT);
topPanel.add(splitPaneV, BorderLayout.CENTER);
splitPaneH = new JSplitPane(JSplitPane.HORIZONTAL_SPLIT);
splitPaneH.setLeftComponent(panel1);
splitPaneH.setRightComponent(panel2);
splitPaneV.setLeftComponent(splitPaneH);
splitPaneV.setRightComponent(panel3);
/*setContentPane(new MyJPanel1());
setContentPane(new MyJPanel2());
setContentPane(new MyJPanel3());*/
}
private class MyJPanel1 extends JPanel{
public MyJPanel1(){
panel1 = new JPanel();
panel1.setLayout(new BorderLayout());
panel1.setPreferredSize(new Dimension(200,500));
}
@Override
public void paintComponent(Graphics g) {
//super.paintComponent(g);
g.drawString("BLAH1", 20, 20);
g.drawRect(200, 200, 200, 200);
//setVisible(true);
}
}
private class MyJPanel2 extends JPanel{
public MyJPanel2(){
panel2 = new JPanel();
panel2.setLayout(new FlowLayout());
panel2.setPreferredSize(new Dimension(1000,500));
}
@Override
public void paintComponent(Graphics g) {
super.paintComponent(g);
g.drawString("BLAH2", 20, 20);
g.drawRect(200, 200, 200, 200);
}
}
private class MyJPanel3 extends JPanel{
public MyJPanel3(){
panel3 = new JPanel();
panel3.setLayout(new BorderLayout());
panel3.setPreferredSize(new Dimension(400, 100));
panel3.setMinimumSize(new Dimension(100, 50));
}
@Override
public void paintComponent(Graphics g) {
//super.paintComponent(g);
g.drawString("BLAH3", 20, 20);
g.drawRect(200, 200, 200, 200);
}
}
public static void main(String[] args) {
//Schedule a job for the event-dispatching thread:
//creating and showing this application's GUI.
javax.swing.SwingUtilities.invokeLater(new Runnable() {
public void run() {
createAndShowGUI();
}
});
}
private static void createAndShowGUI() {
//Create and set up the window.
Demo frame = new Demo("Demo");
frame.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
frame.setBounds(50, 50, 1200, 700);
frame.pack();
frame.setVisible(true);
}
}
是,現在似乎確定。 – SASM
@Suyesh:很高興你有它的工作! –
對不起,還有一件事。你能否給我一些關於如何將actionlistener附加到這些繪圖(比如矩形)的想法,以便我可以在下一個面板上提供更多關於它的信息。 – SASM