如何在Java Swing中创建以下GUI?
发布时间:2020-12-15 00:06:48 所属栏目:Java 来源:网络整理
导读:我想用 Java Swing创建以下GUI. 由于我对Java Swing没有足够的经验,我不确定如何精确地重新创建该GUI. 我尝试过使用GridLayout,它看起来像这样: 我已经尝试过其他的LayoutManagers,但由于我的经验不足,我无法获得任何与我想要实现的GUI类似的东西. 我可能不
我想用
Java Swing创建以下GUI.
由于我对Java Swing没有足够的经验,我不确定如何精确地重新创建该GUI. 我尝试过使用GridLayout,它看起来像这样: 我已经尝试过其他的LayoutManagers,但由于我的经验不足,我无法获得任何与我想要实现的GUI类似的东西. 我可能不得不使用GridBagLayout,但我已经尝试过,根本无法完成任何事情. 以下是用于创建第二个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 HellonTesting!ntesterinontesteroni"); testTextArea2.setText("Hello Hello HellonTesting!ntestnABC123ncdef123nhijk123"); 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 HellonTesting!ntesterinontesteroni"); testTextArea2.setText("Hello Hello HellonTesting!ntestnABC123ncdef123nhijk123"); 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); } } (编辑:李大同) 【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容! |