当我使用java.awt.Canvas时,JSplitPane不会调整大小吗?

问题描述

| 我有一个简单的示例,其中我对JSplitPane中的组件使用了“ 0”,而JSplitPane不允许进行调整。谁能解释为什么? (更重要的是,如何修复) VerticalSplit.java:
import java.awt.BorderLayout;
import java.awt.Component;
import javax.swing.JPanel;
import javax.swing.JSplitPane;

abstract public class VerticalSplit {
    public VerticalSplit(JPanel panel)
    {
        panel.setLayout(new BorderLayout());
        JSplitPane jsp = new JSplitPane(JSplitPane.VERTICAL_SPLIT,createComponent1(),createComponent2());
        jsp.setResizeWeight(0.5);
        panel.add(jsp,BorderLayout.CENTER);
    }
    abstract protected Component createComponent1();
    abstract protected Component createComponent2();
}
CanvasTest1.java:
import java.awt.Canvas;
import java.awt.Component;
import java.awt.Dimension;
import java.awt.Graphics;
import javax.swing.JFrame;
import javax.swing.JPanel;

public class CanvasTest1 extends VerticalSplit
{
    static public class PlainCanvas extends Canvas
    {
        @Override public void paint(Graphics g)
        {
            Dimension d = getSize();
            int h = getHeight();
            int w = getWidth();
            g.drawRect(0,w,h);
            g.drawLine(0,h,0);
        }
    };

    public CanvasTest1(JPanel panel) {  super(panel); }

    @Override protected Component createComponent1() {
        return new PlainCanvas();
    }

    @Override protected Component createComponent2() {
        return new PlainCanvas();
    }

    public static void main(String[] args) {
        JPanel panel = new JPanel();
        CanvasTest1 test = new CanvasTest1(panel);

        JFrame frame = new JFrame(test.getClass().getName());
        frame.setContentPane(panel);

        frame.pack();
        frame.setDefaultCloSEOperation(JFrame.EXIT_ON_CLOSE);
        frame.setVisible(true);
    }
}
    

解决方法

从Canvas更改为JPanel(如@tulskiy建议-谢谢!)使其正常工作。     

相关问答

Selenium Web驱动程序和Java。元素在(x,y)点处不可单击。其...
Python-如何使用点“。” 访问字典成员?
Java 字符串是不可变的。到底是什么意思?
Java中的“ final”关键字如何工作?(我仍然可以修改对象。...
“loop:”在Java代码中。这是什么,为什么要编译?
java.lang.ClassNotFoundException:sun.jdbc.odbc.JdbcOdbc...