-1

ボタンをテキストエリアの下の行に表示するにはどうすればよいですか?

//Imports
import java.awt.CardLayout;
import java.awt.Color;
import java.awt.Component;
import java.awt.Insets;
import java.awt.event.ActionEvent;
import java.awt.event.ActionListener;
import javax.swing.BorderFactory;
import javax.swing.JButton;
import javax.swing.JCheckBox;
import javax.swing.JFrame;
import javax.swing.JPanel;
import javax.swing.JScrollPane;
import javax.swing.JTextArea;
import javax.swing.JTextPane;

public class ProfessorPhysInstall {

    /**
     * @param args the command line arguments
     */
    public static void main(String[] args) {
        // TODO code application logic here
        //Variables
        final JFrame mainframe = new JFrame();
        mainframe.setSize(500, 435);
        final JPanel cards = new JPanel(new CardLayout());
        final CardLayout cl = (CardLayout)(cards.getLayout());
        mainframe.setTitle("Future Retro Gaming Launcher");
        //Screen1
        JPanel screen1 = new JPanel();
        JTextPane TextPaneScreen1 = new JTextPane();
        TextPaneScreen1.setEditable(false);
        TextPaneScreen1.setBackground(new java.awt.Color(240, 240, 240));
        TextPaneScreen1.setText("Welcome to the install wizard  for Professor Phys!\n\nPlease agree to the following terms and click the next button to continue.");
        TextPaneScreen1.setSize(358, 48);
        TextPaneScreen1.setLocation(0, 0);
        TextPaneScreen1.setBorder(BorderFactory.createCompoundBorder(BorderFactory.createLineBorder(Color.black),BorderFactory.createEmptyBorder(5, 5, 5, 5)));
        TextPaneScreen1.setMargin(new Insets(4,4,4,4));
        screen1.add(TextPaneScreen1);
        JTextArea TextAreaScreen1 = new JTextArea();
        JScrollPane sbrText = new JScrollPane(TextAreaScreen1);
        TextAreaScreen1.setRows(15);
        TextAreaScreen1.setColumns(40);
        TextAreaScreen1.setEditable(false);
        TextAreaScreen1.setText("Lots of text");
        TextAreaScreen1.setBorder(BorderFactory.createCompoundBorder(BorderFactory.createLineBorder(Color.black),BorderFactory.createEmptyBorder(5, 5, 5, 5)));
        TextAreaScreen1.setMargin(new Insets(4,4,4,4));
        screen1.add(sbrText);
        final JCheckBox Acceptance = new JCheckBox();
        Acceptance.setText("I Accept The EULA Agreenment.");
        screen1.add(Acceptance);
        final JButton NextScreen1 = new JButton();
        NextScreen1.setText("Next");
        NextScreen1.addActionListener(new ActionListener() {
            @Override
            public void actionPerformed(ActionEvent ae) {
                if(Acceptance.isSelected())
                    cl.next(cards);
            }
        });      
        screen1.add(NextScreen1);        
        JButton CancelScreen1 = new JButton();
        CancelScreen1.setText("Cancel");
        CancelScreen1.addActionListener(new ActionListener() {
            @Override
            public void actionPerformed(ActionEvent ae) {
                System.exit(0);
            }
        });      
        screen1.add(CancelScreen1);
        cards.add(screen1);

        //Screen2
        JPanel screen2 = new JPanel();
        JTextPane TextPaneScreen2 = new JTextPane();
        TextPaneScreen2.setEditable(false);
        TextPaneScreen2.setBackground(new java.awt.Color(240, 240, 240));
        TextPaneScreen2.setText("Please select the Future Retro Gaming Launcher.");
        TextPaneScreen2.setSize(358, 48);
        TextPaneScreen2.setLocation(0, 0);
        TextPaneScreen2.setBorder(BorderFactory.createCompoundBorder(BorderFactory.createLineBorder(Color.black),BorderFactory.createEmptyBorder(5, 5, 5, 5)));
        TextPaneScreen2.setMargin(new Insets(4,4,4,4));
        screen2.add(TextPaneScreen2);
        final JButton BackScreen2 = new JButton();
        BackScreen2.setText("Back");
        BackScreen2.addActionListener(new ActionListener() {
            @Override
            public void actionPerformed(ActionEvent ae) {
                if(Acceptance.isSelected())
                    cl.previous(cards);
            }
        });    
        screen2.add(BackScreen2);     
        final JButton NextScreen2 = new JButton();
        NextScreen2.setText("Next");
        NextScreen2.addActionListener(new ActionListener() {
            @Override
            public void actionPerformed(ActionEvent ae) {
                if(Acceptance.isSelected())
                    cl.next(cards);
            }
        });      
        screen2.add(NextScreen2);        
        JButton CancelScreen2 = new JButton();
        CancelScreen2.setText("Cancel");
        CancelScreen2.addActionListener(new ActionListener() {
            @Override
            public void actionPerformed(ActionEvent ae) {
                System.exit(0);
            }
        });      
        screen2.add(CancelScreen2);
        cards.add(screen2);

        mainframe.add(cards);
        mainframe.setVisible(true);
    }
}

これはそれがどのように見えるかです

ここに画像の説明を入力

4

3 に答える 3

2

のデフォルトのレイアウト マネージャはJPanelですFlowLayout。名前が示すように、単純にコンポーネントを次々とフローします。

別のレイアウト マネージャーを試す必要があります。たとえば、必要なGridBagLayoutことは実行できますが、レイアウトが複雑です。同じ効果を得るには、複合レイアウトを使用する方がよい場合があります。

つまり、UI を小さなチャンクに分割し、グループごとに異なるレイアウト マネージャーを適用します。

チェックアウト...

あなたも読むことから恩恵を受けるでしょう...

追伸...

また、各画面を独自のクラスに分割することを検討することもできます。そのままのコードは非常に読みにくく、理解するのが難しいです-IMHO

于 2013-06-13T01:38:58.083 に答える
2

適切なLayoutManagerを使用する

デフォルトscreen2で があるすべてのコンポーネントを追加しました。FlowLayoutあなたが求めているものを達成するためのさまざまな方法があります。

詳細:レイアウト マネージャーの使用

于 2013-06-13T01:30:43.880 に答える