我想用
Java Swing创建以下GUI.
由于我对Java Swing没有足够的经验,我不确定如何精确地重新创建该GUI.
我尝试过使用GridLayout,它看起来像这样:
我已经尝试过其他的LayoutManagers,但由于我的经验不足,我无法获得任何与我想要实现的GUI类似的东西.
我可能不得不使用GridBagLayout,但我已经尝试过,根本无法完成任何事情.
我不确定如何使用GridBagLayout,特别是因为所需的colums数量存在差异(2,2和3).
以下是用于创建第二个GUI的代码:
import java.awt.*; import javax.swing.*; public class GUITest extends JFrame { public GUItest() { super("Testing Title"); Container pane = getContentPane(); pane.setLayout(new GridLayout(3,1)); pane.add(getHeader()); pane.add(getTextArea()); pane.add(getButtonPanel()); } public JComponent getHeader() { JPanel labelPanel = new JPanel(); labelPanel.setLayout(new GridLayout(1,2)); labelPanel.setSize(getPreferredSize()); JLabel labelLocal = new JLabel("Left value: ",JLabel.CENTER); JLabel labelDB = new JLabel("Right value: ",JLabel.CENTER); labelPanel.add(labelLocal); labelPanel.add(labelDB); return labelPanel; } public JComponent getTextArea() { JPanel textPanel = new JPanel(); textPanel.setLayout(new GridLayout(1,2,5,0)); JTextArea testTextArea = new JTextArea(); testTextArea.setEditable(false); JScrollPane sp1 = new JScrollPane(testTextArea); JTextArea testTextArea2 = new JTextArea(); JScrollPane sp2 = new JScrollPane(testTextArea2); testTextArea2.setEditable(false); testTextArea.setText("Hello Hello Hello\nTesting!\ntesterino\ntesteroni"); testTextArea2.setText("Hello Hello Hello\nTesting!\ntest\nABC123\ncdef123\nhijk123"); textPanel.add(sp1); textPanel.add(sp2); return textPanel; } public JComponent getButtonPanel() { JPanel inner = new JPanel(); inner.setLayout(new FlowLayout((FlowLayout.CENTER),100)); inner.add(new JButton("Do something")); inner.add(new JButton("Do something different")); inner.add(new JButton("Do something even more different")); return inner; } public static void main(String[] args) { GUITest e = new GUItest(); e.setSize(700,500); e.setVisible(true); e.setResizable(false); e.setDefaultCloSEOperation(EXIT_ON_CLOSE); e.setLocationRelativeto(null); } }
我很感谢任何支持!
解决方法
这是你的代码只有一些小的变化:)
import java.awt.*; import javax.swing.*; public class GUITest extends JFrame { public GUItest() { super("Testing Title"); Container pane = getContentPane(); pane.setLayout(new BorderLayout());//Modified Layout to BorderLayout pane.add(getHeader(),BorderLayout.norTH); //BorderLayout.norTH pane.add(getTextArea(),BorderLayout.CENTER);//BorderLayout.CENTER pane.add(getButtonPanel(),BorderLayout.soUTH);//BorderLayout.soUTH } public JComponent getHeader() { JPanel labelPanel = new JPanel(); labelPanel.setLayout(new GridLayout(1,2)); labelPanel.setSize(getPreferredSize()); JLabel labelLocal = new JLabel("Left value: ",JLabel.CENTER); JLabel labelDB = new JLabel("Right value: ",JLabel.CENTER); labelPanel.add(labelLocal); labelPanel.add(labelDB); return labelPanel; } public JComponent getTextArea() { JPanel textPanel = new JPanel(); textPanel.setLayout(new GridLayout(1,0)); JTextArea testTextArea = new JTextArea(); testTextArea.setEditable(false); JScrollPane sp1 = new JScrollPane(testTextArea); JTextArea testTextArea2 = new JTextArea(); JScrollPane sp2 = new JScrollPane(testTextArea2); testTextArea2.setEditable(false); testTextArea.setText("Hello Hello Hello\nTesting!\ntesterino\ntesteroni"); testTextArea2.setText("Hello Hello Hello\nTesting!\ntest\nABC123\ncdef123\nhijk123"); textPanel.add(sp1); textPanel.add(sp2); return textPanel; } public JComponent getButtonPanel() { JPanel inner = new JPanel(); inner.setLayout(new FlowLayout());//Modified to standard FlowLayout inner.add(new JButton("Do something")); inner.add(new JButton("Do something different")); inner.add(new JButton("Do something even more different")); return inner; } public static void main(String[] args) { GUITest e = new GUItest(); e.pack(); //Modified setSize(700,500) to pack() e.setVisible(true); e.setResizable(false); e.setDefaultCloSEOperation(EXIT_ON_CLOSE); e.setLocationRelativeto(null); } }
原文地址:https://www.jb51.cc/java/126778.html
版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。