Java 在label-Swing中看不到滚动窗格
我有一个带有两个框的GUI:一个文本区域和一个标签 带有工作滚动条的第一个框:Java 在label-Swing中看不到滚动窗格,java,swing,user-interface,jlabel,jscrollpane,Java,Swing,User Interface,Jlabel,Jscrollpane,我有一个带有两个框的GUI:一个文本区域和一个标签 带有工作滚动条的第一个框: public class ResultView { private JTextArea resultsTextArea; private JPanel resultsPanel; private JScrollPane scrollPane; public ResultView() { createGUI(); connectPanel();
public class ResultView {
private JTextArea resultsTextArea;
private JPanel resultsPanel;
private JScrollPane scrollPane;
public ResultView() {
createGUI();
connectPanel();
}
private void createGUI() {
resultsTextArea = new JTextArea("Command results:");
resultsTextArea.setPreferredSize(new Dimension(380, 2000));
resultsTextArea.setBackground(Color.BLACK);
resultsTextArea.setForeground(Color.WHITE);
resultsTextArea.setEditable(false);
scrollPane = new JScrollPane(resultsTextArea);
scrollPane.setPreferredSize(new Dimension(400, 300));
}
private void connectPanel() {
resultsPanel = new JPanel();
resultsPanel.add(scrollPane);
}
public class DrawView {
private JLabel drawView;
private JPanel drawViewPanel;
private JPanel drawViewPaintPanel;
private int currentNumWagons;
private int currentTrain = -1;
private int OFFSET = 100;
private int TRAINLENGTH = 100;
private JScrollPane scrollPane;
public DrawView() {
createGUI();
connectPanel();
}
private void createGUI() {
drawView = new JLabel("DrawView:");
drawView.setPreferredSize(new Dimension(800,20));
drawViewPaintPanel = new JPanel();
drawViewPaintPanel.setPreferredSize(new Dimension(790, 280));
scrollPane = new JScrollPane(drawView);
scrollPane.setPreferredSize(new Dimension(800,300));
}
private void connectPanel() {
drawViewPanel = new JPanel(new BorderLayout());
drawViewPanel.add(drawView, BorderLayout.NORTH);
drawViewPanel.add(drawViewPaintPanel, BorderLayout.CENTER);
drawViewPanel.add(scrollPane);
}
第二个未显示滚动条的框:
public class ResultView {
private JTextArea resultsTextArea;
private JPanel resultsPanel;
private JScrollPane scrollPane;
public ResultView() {
createGUI();
connectPanel();
}
private void createGUI() {
resultsTextArea = new JTextArea("Command results:");
resultsTextArea.setPreferredSize(new Dimension(380, 2000));
resultsTextArea.setBackground(Color.BLACK);
resultsTextArea.setForeground(Color.WHITE);
resultsTextArea.setEditable(false);
scrollPane = new JScrollPane(resultsTextArea);
scrollPane.setPreferredSize(new Dimension(400, 300));
}
private void connectPanel() {
resultsPanel = new JPanel();
resultsPanel.add(scrollPane);
}
public class DrawView {
private JLabel drawView;
private JPanel drawViewPanel;
private JPanel drawViewPaintPanel;
private int currentNumWagons;
private int currentTrain = -1;
private int OFFSET = 100;
private int TRAINLENGTH = 100;
private JScrollPane scrollPane;
public DrawView() {
createGUI();
connectPanel();
}
private void createGUI() {
drawView = new JLabel("DrawView:");
drawView.setPreferredSize(new Dimension(800,20));
drawViewPaintPanel = new JPanel();
drawViewPaintPanel.setPreferredSize(new Dimension(790, 280));
scrollPane = new JScrollPane(drawView);
scrollPane.setPreferredSize(new Dimension(800,300));
}
private void connectPanel() {
drawViewPanel = new JPanel(new BorderLayout());
drawViewPanel.add(drawView, BorderLayout.NORTH);
drawViewPanel.add(drawViewPaintPanel, BorderLayout.CENTER);
drawViewPanel.add(scrollPane);
}
你知道如何解决这个问题吗?我需要解决这个问题,因为操作按钮正在向标签添加列车,当添加两列以上列车时,第三列列车将位于标签下方。我将在此处添加我的GUI图片,让您了解我的GUI是如何设计的:
去掉所有setPreferredSize语句
布局管理器的工作是根据添加到配电盘的构件确定配电盘的大小
drawViewPanel.add(drawViewPaintPanel, BorderLayout.CENTER);
drawViewPanel.add(scrollPane);
当首选组件大小大于组件大小时,将显示滚动条。因此,在向配电盘添加组件时,首选尺寸需要能够动态更改
drawViewPanel.add(drawViewPaintPanel, BorderLayout.CENTER);
drawViewPanel.add(scrollPane);
如果在向BorderLayout添加组件时未指定约束,则布局将放置在中心。但是,中心只能显示单个组件,因此滚动窗格将取代drawViewPaintPanel
resultsTextArea = new JTextArea("Command results:");
resultsTextArea.setPreferredSize(new Dimension(380, 2000));
对于JTextArea,您可以使用以下方法建议首选尺寸:
resultsTextArea = new JTextArea(5, 30);
resultsTextArea.setText("Command results:");
//resultsTextArea.setPreferredSize(new Dimension(380, 2000));
文本区域现在将有5行文本。5行之后将显示滚动条。请注意,drawViewPanel.addscrollPane等同于drawViewPanel.addscrollPane、BorderLayout.CENTER。滚动条不显示,因为面板上没有内容。。。?尝试设置滚动条策略:1,以便更快地获得更好的帮助,添加或。2见“是”。