1

これは私の最初のGUIアプリケーションであり、見栄えを良くするのに苦労しています。私はいくつかのレイアウトを試し、フロー、グリッド、ボーダーなど、それらをいじくり回しました。プログラムを実行すると、すべてがごちゃ混ぜになります。

私はそれを次のように見せたいです:

Unloaded Measurement      |textfield| |textfield|
Loaded Rider Measurement  |textField| |textfield|
Loaded Bike Measurement   |textField| |Textfield|

                   |Button|
_______________________________________________________________________________________

Race Sag: |TextField|
Free Sag: |TextField|
Race Sag Notes: |       TextField         |
Free Sag Notes: |       TextField         |

これが私の問題が何であるかを理解するのに役立つスクリーンショットです: スクリーンショット

上はユーザー入力用で、下は計算された出力です。私はこれについていくらかの助けのために十分な詳細を与えたことを望みます。助けてくれる人に本当に感謝しています!これが私のコードです:

import java.awt.event.ActionEvent;
import java.awt.event.ActionListener;
import java.util.StringTokenizer;
import javax.swing.JButton;
import javax.swing.JFrame;
import javax.swing.JLabel;
import javax.swing.JPanel;
import javax.swing.JTextField;


public class Main extends JFrame {

private static final long serialVersionUID = 1L;
private JPanel panel;
private JLabel messageLabel;
private JLabel messageLabel1;
private JLabel messageLabel2;
private JLabel raceSagLabel;
private JLabel freeSagLabel;
private JTextField wholeTextField;
private JTextField wholeTextField1;
private JTextField wholeTextField2;
private JTextField fracTextField;
private JTextField fracTextField1;
private JTextField fracTextField2;
private JTextField raceSagText;
private JTextField freeSagText;
private JTextField noteText;
private JTextField noteText1;
private JButton calcButton;
private final int WINDOW_WIDTH = 575;
private final int WINDOW_HEIGHT = 400;


/*===============================================================================
    Project : test.java - SagCalculator
    Author  : Brian Green
    Date    : Jan 10, 2013
    Abstract:   

  ===============================================================================*/
public static void main(String[] args) {
    @SuppressWarnings("unused")
    Main sc = new Main();
}
public Main(){
    setTitle("Rider Sag Calculator");
    setSize(WINDOW_WIDTH, WINDOW_HEIGHT); 
    setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
    //setLayout();
    buildPanel();
    add(panel);
    setVisible(true);
}
private void buildPanel(){
    messageLabel = new JLabel("Enter Unloaded Stand Measurement");
    messageLabel1 = new JLabel("Enter Loaded with Rider Measurement");
    messageLabel2 = new JLabel("Enter Loaed without Rider Measurement");
    wholeTextField = new JTextField(3);
    fracTextField = new JTextField(3);
    wholeTextField1 = new JTextField(3);
    fracTextField1 = new JTextField(3);
    wholeTextField2 = new JTextField(3);
    fracTextField2 = new JTextField(3);
    calcButton = new JButton("Calculate");
    raceSagLabel = new JLabel("Race Sag: ");
    raceSagText = new JTextField(5);
    freeSagLabel = new JLabel("Free Sag: ");
    freeSagText = new JTextField(5);
    noteText = new JTextField(30);
    noteText1 = new JTextField(30);

    calcButton.addActionListener(new CalcButtonListener());
    panel = new JPanel();

    panel.add(messageLabel);
    panel.add(wholeTextField);
    panel.add(fracTextField);
    panel.add(messageLabel1);
    panel.add(wholeTextField1);
    panel.add(fracTextField1);
    panel.add(messageLabel2);
    panel.add(wholeTextField2);
    panel.add(fracTextField2);
    panel.add(calcButton);  
    panel.add(raceSagLabel);
    panel.add(raceSagText);
    panel.add(freeSagLabel);
    panel.add(freeSagText);
    panel.add(noteText);
    panel.add(noteText1);



}

何らかの理由でコードをもっと見る必要がある場合は、私に知らせてください。喜んで提供させていただきます。助けてくれてありがとう!

私はこれをすべて解決しました!@trashgodの提案に感謝します。 ここに画像の説明を入力してください

4

3 に答える 3

2

JFrameでpack()を呼び出してみてください。設定しても、レイアウトはすぐには適用されません。または、validate()を使用して、コンポーネントもレイアウトする必要があります。ところで。サンプルコードでは、レイアウトマネージャーを設定していません。

于 2013-01-12T15:13:04.143 に答える
2

ここで他のいくつかの提案(GridBagLayoutを含む)を使用して目的のレイアウトを実現することは可能ですが、フィールドとラベルを並べる必要があるレイアウトを作成するために明示的に設計されているため、これまでで最も簡単な解決策はJGoodiesFormLayoutを使用することです。 。

于 2013-01-12T17:38:02.573 に答える
1

GroupLayout、ここを参照してください。ラベル付きフォームでうまく機能し、サブパネルとして管理できます。

画像

于 2013-01-12T17:44:28.250 に答える