我在互联网上查过关于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", Font.BOLD, 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, 0, false));
passwordField=new JPasswordField(10);
passwordField.setBorder(new LineBorder(null, 0, 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()方法,它们将显示在同一行上,我只需要一个小的简单方法来做出一个好的布局
由于许多原因,代码中太多的static
变量不是理想的解决方案。尝试使用不同的方法,直到并且除非您不考虑为项目
创建一个工厂类
。看看这个修改版,这样够好吗:
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, 102, 204);
private Font myFont11=new Font("Tahoma", 1, 11);
private Font myFont12bold=new Font("Tahoma", Font.BOLD, 12);
private Font myFont11bold=new Font("Tahoma", Font.BOLD, 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, 0, false));
passwordField=new JPasswordField(10);
passwordField.setBorder(new LineBorder(null, 0, false));
//Panel
myPanel=new JPanel();
myPanel.setOpaque(true);
myPanel.setBorder(BorderFactory.createTitledBorder("Login"));
myPanel.setBackground(myColor);
myPanel.setLayout(new GridLayout(2, 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,300));//width:400px, 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();
}
});
}
}
以下是输出:
问题内容: 我需要一些有关解决此问题的最佳方法的建议。 我研究了DROOLS,Java Rule Engine和其他一些工具。所有这些都很强大,并且对它们有好处。我不知道哪个(如果有)对我来说是最佳选择。 我有一个业务对象。(简化为演示) 我需要在Web应用程序中编写一个编辑器,以允许围绕这些字段构建复杂的规则。我需要支持复杂的嵌套AND / OR逻辑。我只需要基本运算符,规则应该简单地评估为是或
问题内容: 我想知道如何在curl中发送发布请求并获取响应页面。 问题答案: 那么这样的事情呢: 有关可与curl配合使用的选项的列表,您可以查看的页面。 在这里,您至少必须使用: :当您要发送POST请求而不是GET时 :取决于您是要返回请求结果还是仅输出请求结果。 :将要发布的数据-可以直接写为字符串(如查询字符串),也可以使用数组 并且不要犹豫,阅读PHP手册的curl部分;-)
问题内容: 我真的是使用Android的新手,所以让我感到困惑。我看了看似100篇教程以及有关如何从Android上的Web服务获取信息的示例,但是我需要的是对一个毫无头绪的人所需要的东西。以下是我没有得到的特别几点: 我不知道该如何处理XML文件。.意思是,一旦我完成Java工作,就是所有要做的事情吗?还是需要在XML文件中进行任何更改? 似乎我应该为其中一些教程创建一个新类,但是我不确定,如果
本文向大家介绍Android 简单实现一个流式布局的示例,包括了Android 简单实现一个流式布局的示例的使用技巧和注意事项,需要的朋友参考一下 本篇文章主要介绍了Android 简单实现一个流式布局的示例,分享给大家,具体如下: 流式布局应该是我们很常见的一种布局了,在很多场景下都会遇到它,例如:标签之类的功能等。用轮子不如造轮子来的爽,这里自己简单的实现下流式布局: onMeasure on
10.2.TimelineActivity的基本布局 在第一次迭代中,我们为TimelineActivity创建一个新的布局(Layout),它使用一个TextView来展示数据库中的所有消息。在刚开始的时候数据量不大,这样还是没有问题的。
我有一个简单的代码: 应该会给我输出这样的结果: 但相反,它把我印出来了: 谁能建议我如何解决这个问题?我知道问题是当我的程序遇到“”时,它会自动拆分字符串,然后再跟一次“”,它又拆分一次,所以在输出中创建一个空行,但我不知道如何修复它,这样它就会同时拆分多个分隔符。