如何调整 JPanel 的高度?
How can I resize the height of a JPanel?
//Attributes
//Stats GUI components
JLabel hp = new JLabel();
JLabel hpPoints = new JLabel("TEST");
JLabel chakra = new JLabel();
JLabel chakraPoints = new JLabel("TEST");
JLabel ryo = new JLabel();
JLabel ryoPoints = new JLabel("TEST");
//Output & Input GUI components
JTextField input = new JTextField();
JTextArea output = new JTextArea(1000, 300);
JPanel statsPanel = new JPanel();
JPanel outputPanel = new JPanel();
JPanel inputPanel = new JPanel();
//Constructor
public Terminal() {
setTitle("Shinobi Shinso");
setSize(1000, 600);
//setResizable(false);
setLocation(400, 100);
setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
Container panneau = getContentPane();
panneau.setLayout(new GridLayout(0, 1));
statsPanel.setLayout(new GridLayout(1, 3));
//Output & input
//Add outputPanel to the panneau
panneau.add(outputPanel);
//Add output to outputPanel
outputPanel.add(output);
//Add input to outputPanel
outputPanel.add(input);
input.setColumns(98);
output.setRows(15);
output.setEditable(false);
output.setBackground(Color.BLACK);
output.setForeground(Color.WHITE);
//Add stats panel
panneau.add(statsPanel);
//Statistics
//Health
hp.setIcon(new ImageIcon(new ImageIcon("D:\eclipse-workspace\Shinobi Shinso\images\scroll-hp.png").getImage().
getScaledInstance(300, 150, Image.SCALE_DEFAULT)));
hp.setHorizontalAlignment(JLabel.CENTER);
statsPanel.add(hp);
hpPoints.setBounds(100, 25, 100, 100);
hp.add(hpPoints);
setVisible(true);
}
它是这样显示的:
我尝试使用 JScrollPanel 和许多晦涩的编码巫术都无济于事。我似乎找不到降低包含图片的 JPanel 高度的方法。
我删除了图片中的2个卷轴,但我认为它不会改变任何东西。
I can't seem to find a way to reduce the height of the JPanel containing the pictures.
不要使用 GridLayout 作为父布局管理器。 GridLayout 使所有组件大小相同。
我建议您不要更改内容窗格的布局管理器。将其保留为默认 BorderLayout。
然后使用:
panneau.add(outputPanel, BorderLayout.CENTER);
panneau.add(statsPanel, BorderLayout.PAGE_END);
此外,您创建的 JTextArea 不正确:
JTextArea output = new JTextArea(1000, 300);
参数用于 rows/columns,而不是 width/height。
所以你应该使用类似的东西:
JTextArea output = new JTextArea(15, 40);
并且文本区域通常会添加到 JScrollPane,以便在需要时可以显示滚动条。
阅读 Swing tutorial 了解 Swing 基础知识。有以下部分:
- 布局管理器
- 如何使用文本区域
应该会有帮助。
//Attributes
//Stats GUI components
JLabel hp = new JLabel();
JLabel hpPoints = new JLabel("TEST");
JLabel chakra = new JLabel();
JLabel chakraPoints = new JLabel("TEST");
JLabel ryo = new JLabel();
JLabel ryoPoints = new JLabel("TEST");
//Output & Input GUI components
JTextField input = new JTextField();
JTextArea output = new JTextArea(1000, 300);
JPanel statsPanel = new JPanel();
JPanel outputPanel = new JPanel();
JPanel inputPanel = new JPanel();
//Constructor
public Terminal() {
setTitle("Shinobi Shinso");
setSize(1000, 600);
//setResizable(false);
setLocation(400, 100);
setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
Container panneau = getContentPane();
panneau.setLayout(new GridLayout(0, 1));
statsPanel.setLayout(new GridLayout(1, 3));
//Output & input
//Add outputPanel to the panneau
panneau.add(outputPanel);
//Add output to outputPanel
outputPanel.add(output);
//Add input to outputPanel
outputPanel.add(input);
input.setColumns(98);
output.setRows(15);
output.setEditable(false);
output.setBackground(Color.BLACK);
output.setForeground(Color.WHITE);
//Add stats panel
panneau.add(statsPanel);
//Statistics
//Health
hp.setIcon(new ImageIcon(new ImageIcon("D:\eclipse-workspace\Shinobi Shinso\images\scroll-hp.png").getImage().
getScaledInstance(300, 150, Image.SCALE_DEFAULT)));
hp.setHorizontalAlignment(JLabel.CENTER);
statsPanel.add(hp);
hpPoints.setBounds(100, 25, 100, 100);
hp.add(hpPoints);
setVisible(true);
}
它是这样显示的:
我尝试使用 JScrollPanel 和许多晦涩的编码巫术都无济于事。我似乎找不到降低包含图片的 JPanel 高度的方法。
我删除了图片中的2个卷轴,但我认为它不会改变任何东西。
I can't seem to find a way to reduce the height of the JPanel containing the pictures.
不要使用 GridLayout 作为父布局管理器。 GridLayout 使所有组件大小相同。
我建议您不要更改内容窗格的布局管理器。将其保留为默认 BorderLayout。
然后使用:
panneau.add(outputPanel, BorderLayout.CENTER);
panneau.add(statsPanel, BorderLayout.PAGE_END);
此外,您创建的 JTextArea 不正确:
JTextArea output = new JTextArea(1000, 300);
参数用于 rows/columns,而不是 width/height。
所以你应该使用类似的东西:
JTextArea output = new JTextArea(15, 40);
并且文本区域通常会添加到 JScrollPane,以便在需要时可以显示滚动条。
阅读 Swing tutorial 了解 Swing 基础知识。有以下部分:
- 布局管理器
- 如何使用文本区域
应该会有帮助。