在 JPanel 上绘画并将其添加到 JScrollPane
Painting on a JPanel and adding it to a JScrollPane
如标题所示,我想在 JPanel 上绘画并将其显示在 JScrollpane 中,因此如果 JPanel 中的内容很大,则显示滚动条。我试图通过以下方式完成此操作:
import java.awt.Graphics;
import java.awt.Graphics2D;
import javax.swing.JFrame;
import javax.swing.JPanel;
import javax.swing.JScrollPane;
public class Main extends JFrame{
DrawPanel dp;
JScrollPane jsp;
public Main(){
setTitle("Test");
setSize(400,400);
setDefaultCloseOperation(EXIT_ON_CLOSE);
dp = new DrawPanel();
jsp = new JScrollPane(dp);
getContentPane().add(jsp);
}
public class DrawPanel extends JPanel{
@Override
protected void paintComponent(Graphics grphcs) {
super.paintComponent(grphcs);
Graphics2D g2d = (Graphics2D) grphcs;
g2d.drawString("..long text....long text....long text....long text....long text....long text....long text....long text..", 10, 20);
}
}
public static void main(String[] args) {
new Main().setVisible(true);
}
}
预期输出:window 带有长文本和水平滚动条。
我也尝试过覆盖 getPreferredSize 方法(正如其他问题中的一些答案所建议的那样),但它似乎不起作用。
另外,有人可以解释为什么当添加到 jscrollpane 的面板中有标签或按钮时会出现滚动条(使用 jscrollpane),但在上述情况下不起作用吗?任何帮助将不胜感激。
您可以通过设置大小或覆盖它们来调整 JPanel
的大小。
Dimension d = new Dimension(800, 800);
dp.setMinimumSize(d);
dp.setMaximumSize(d);
dp.setPreferredSize(d);
当我这样做时出现滚动条。
如标题所示,我想在 JPanel 上绘画并将其显示在 JScrollpane 中,因此如果 JPanel 中的内容很大,则显示滚动条。我试图通过以下方式完成此操作:
import java.awt.Graphics;
import java.awt.Graphics2D;
import javax.swing.JFrame;
import javax.swing.JPanel;
import javax.swing.JScrollPane;
public class Main extends JFrame{
DrawPanel dp;
JScrollPane jsp;
public Main(){
setTitle("Test");
setSize(400,400);
setDefaultCloseOperation(EXIT_ON_CLOSE);
dp = new DrawPanel();
jsp = new JScrollPane(dp);
getContentPane().add(jsp);
}
public class DrawPanel extends JPanel{
@Override
protected void paintComponent(Graphics grphcs) {
super.paintComponent(grphcs);
Graphics2D g2d = (Graphics2D) grphcs;
g2d.drawString("..long text....long text....long text....long text....long text....long text....long text....long text..", 10, 20);
}
}
public static void main(String[] args) {
new Main().setVisible(true);
}
}
预期输出:window 带有长文本和水平滚动条。
我也尝试过覆盖 getPreferredSize 方法(正如其他问题中的一些答案所建议的那样),但它似乎不起作用。 另外,有人可以解释为什么当添加到 jscrollpane 的面板中有标签或按钮时会出现滚动条(使用 jscrollpane),但在上述情况下不起作用吗?任何帮助将不胜感激。
您可以通过设置大小或覆盖它们来调整 JPanel
的大小。
Dimension d = new Dimension(800, 800);
dp.setMinimumSize(d);
dp.setMaximumSize(d);
dp.setPreferredSize(d);
当我这样做时出现滚动条。