我需要一个基本的简单Java布局方法
发布时间:2020-12-15 04:57:42 所属栏目:Java 来源:网络整理
导读:我已经检查了有关FlowLayout,Group等的互联网,所有这些都是无用的例子.我只需要一个基本的方法来为我的 Java应用程序做一个好的布局.我会告诉你我的代码: import java.awt.*;import javax.swing.*;import javax.swing.border.Border;import javax.swing.bor
我已经检查了有关FlowLayout,Group等的互联网,所有这些都是无用的例子.我只需要一个基本的方法来为我的
Java应用程序做一个好的布局.我会告诉你我的代码:
import java.awt.*; import javax.swing.*; import javax.swing.border.Border; import javax.swing.border.LineBorder; public class Test1 { //Step1 - Declaring variables private static JFrame myFrame; private static JPanel myPanel; private static JLabel titleLabel=null; private static JLabel logIn=null; private static JLabel username=null; private static JLabel password=null; private static JTextField usernameField=null; private static JPasswordField passwordField=null; private static Color myColor=new Color(0,102,204); private static Font myFont11=new Font("Tahoma",1,11); private static Font myFont12bold=new Font("Tahoma",Font.BOLD,12); private static Font myFont11bold=new Font("Tahoma",11); //Step2 - Creating Components public void createComponents() { //Title Label titleLabel=new JLabel("My Program"); titleLabel.setForeground(Color.white); titleLabel.setFont(myFont12bold); //titleLabel.setVisible(false); //hide it or show it //-------------------------------------------------------- logIn=new JLabel("Log in"); logIn.setFont(myFont11bold); logIn.setForeground(Color.white); username=new JLabel("Username"); username.setLabelFor(usernameField); username.setFont(myFont11); username.setForeground(Color.white); password=new JLabel("Password"); password.setLabelFor(passwordField); password.setFont(myFont11); password.setForeground(Color.white); usernameField=new JTextField(10); usernameField.setBorder(new LineBorder(null,false)); passwordField=new JPasswordField(10); passwordField.setBorder(new LineBorder(null,false)); //Panel myPanel=new JPanel(); myPanel.setBackground(myColor); myPanel.add(titleLabel); myPanel.add(logIn); myPanel.add(mySeparator2); myPanel.add(username); myPanel.add(usernameField); myPanel.add(password); myPanel.add(passwordField); //---------------------------------------------------------- //Step3 - Main Function public static void main(String[] arg) { //Frame myFrame=new JFrame(); myFrame.setPreferredSize(new Dimension(400,300));//width:400px,height:300px myFrame.setLocationRelativeTo(null);//to show at center of screen myFrame.setTitle("My Program"); Test1 prog=new Test1(); prog.createComponents(); myFrame.add(myPanel); myFrame.pack();//this alone will not give the frame a size myFrame.setVisible(true); //---------------------------------------------------------------------- } } 这是一个基本的gui,它有一些标签和一些文本字段,.pack()方法它们将显示在同一行,我只需要一个简单的小方法来制作一个好的布局 解决方法
由于许多原因,代码中的太多静态变量不是理想的解决方案.尝试使用不同的方法,除非您不考虑为您的项目制作一个工厂类.看看这个修改过的版本,这个还不错:
import java.awt.*; import javax.swing.*; import javax.swing.border.Border; import javax.swing.border.LineBorder; public class Test1 { //Step1 - Declaring variables private JFrame myFrame; // Added by me private JPanel contentPane; private JPanel myPanel; private JLabel username=null; private JLabel password=null; private JTextField usernameField=null; private JPasswordField passwordField=null; private Color myColor=new Color(200,204); private Font myFont11=new Font("Tahoma",11); private Font myFont12bold=new Font("Tahoma",12); private Font myFont11bold=new Font("Tahoma",11); //Step2 - Creating Components public void createComponents() { contentPane = new JPanel(); contentPane.setOpaque(true); contentPane.setBackground(Color.WHITE); contentPane.setLayout(new GridBagLayout()); contentPane.setBorder(BorderFactory.createTitledBorder("My Program")); username=new JLabel("Username"); username.setLabelFor(usernameField); username.setFont(myFont11); username.setForeground(Color.white); password=new JLabel("Password"); password.setLabelFor(passwordField); password.setFont(myFont11); password.setForeground(Color.white); usernameField=new JTextField(10); usernameField.setBorder(new LineBorder(null,false)); //Panel myPanel=new JPanel(); myPanel.setOpaque(true); myPanel.setBorder(BorderFactory.createTitledBorder("Login")); myPanel.setBackground(myColor); myPanel.setLayout(new GridLayout(2,2,2)); myPanel.add(username); myPanel.add(usernameField); myPanel.add(password); myPanel.add(passwordField); //---------------------------------------------------------- contentPane.add(myPanel); myFrame=new JFrame(); myFrame.setDefaultCloSEOperation(JFrame.EXIT_ON_CLOSE); //myFrame.setPreferredSize(new Dimension(400,height:300px myFrame.setLocationRelativeTo(null);//to show at center of screen myFrame.setTitle("My Program"); //myFrame.add(myPanel); myFrame.setContentPane(contentPane); myFrame.pack();//this alone will not give the frame a size myFrame.setVisible(true); } //Step3 - Main Function public static void main(String[] arg) { SwingUtilities.invokeLater(new Runnable() { public void run() { new Test1().createComponents(); } }); } } 这是输出: (编辑:李大同) 【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容! |