1

いくつかのYouTubeビデオを見て、いくつかのチュートリアルを読み、ここにある以前の質問をした後、JavaスイングとWindow Builder Proを使用してGUIを作成する方法を独学しようとしています。

public class JetstreamFrame extends JFrame {

private static final long serialVersionUID = 1L;
JTabbedPane tabPane;

private JPanel buttonOnePanel;
private JPanel buttonTwoPanel;
private SpringLayout springLayout;
private SpringLayout sl_buttonTwoPanel;
private SpringLayout sl_buttonOnePanel;
private JButton ButtonTwo;
private JButton ButtonOne;
private JScrollPane displayTextPanel;
private JTextArea textArea;
private ScrollPaneLayout sl_displayTextPanel;
private JComboBox<String> comboBox;

public JetstreamFrame() {
    this.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
    springLayout = new SpringLayout();
    getContentPane().setLayout(springLayout);

    tabPane = new JTabbedPane(JTabbedPane.TOP);
    setupTabPane();

    buttonOnePanel = new JPanel();
    sl_buttonOnePanel = new SpringLayout();
    setupButtonOnePanel();


    buttonTwoPanel = new JPanel();
    sl_buttonTwoPanel = new SpringLayout();
    setupButtonTwoPanel();

    ButtonOne = new JButton("Click Here!");
    setupButtonOne();

    setupComboBox();

    ButtonTwo = new JButton("Click Here!");
    setupButtonTwo();

    displayTextPanel = new JScrollPane(textArea);
    sl_displayTextPanel = new ScrollPaneLayout();
    setupDisplayTextPanel();

    textArea = new JTextArea();
    displayTextPanel.setViewportView(textArea);
}

private void setupTabPane()
{
    springLayout = new SpringLayout();
    springLayout.putConstraint(SpringLayout.NORTH, tabPane, 0, SpringLayout.NORTH, getContentPane());
    springLayout.putConstraint(SpringLayout.WEST, tabPane, 0, SpringLayout.WEST, getContentPane());
    springLayout.putConstraint(SpringLayout.SOUTH, tabPane, 245, SpringLayout.NORTH, getContentPane());
    springLayout.putConstraint(SpringLayout.EAST, tabPane, 484, SpringLayout.WEST, getContentPane());
    getContentPane().setLayout(springLayout);
    springLayout.putConstraint(SpringLayout.NORTH, tabPane, 0, SpringLayout.NORTH, getContentPane());
    springLayout.putConstraint(SpringLayout.WEST, tabPane, 0, SpringLayout.WEST, getContentPane());
    springLayout.putConstraint(SpringLayout.SOUTH, tabPane, -198, SpringLayout.SOUTH, getContentPane());
    springLayout.putConstraint(SpringLayout.EAST, tabPane, 484, SpringLayout.WEST, getContentPane());
    getContentPane().add(tabPane);
}

private void setupButtonOnePanel()
{
    tabPane.addTab("Tab One", null, buttonOnePanel, null);
    buttonOnePanel.setLayout(sl_buttonOnePanel);
}

private void setupButtonOne()
{
    ButtonOne.addActionListener(new ActionListener() {
        public void actionPerformed(ActionEvent arg0) 
        {
            textArea.append("You pressed button one, ");
            textArea.append("ComboField: " + (String)comboBox.getSelectedItem() + "\n");
        }
    });
    sl_buttonOnePanel.putConstraint(SpringLayout.NORTH, ButtonOne, 99, SpringLayout.NORTH, buttonOnePanel);
    sl_buttonOnePanel.putConstraint(SpringLayout.WEST, ButtonOne, 187, SpringLayout.WEST, buttonOnePanel);
    buttonOnePanel.add(ButtonOne);
}

@SuppressWarnings({ "rawtypes", "unchecked" })
private void setupComboBox()
{
    String[] array = { "1" , "2", "3", "4" };
    comboBox = new JComboBox(array);
    sl_buttonOnePanel.putConstraint(SpringLayout.NORTH, comboBox, 99, SpringLayout.NORTH, buttonOnePanel);
    sl_buttonOnePanel.putConstraint(SpringLayout.WEST, comboBox, 6, SpringLayout.EAST, ButtonOne);
    sl_buttonOnePanel.putConstraint(SpringLayout.EAST, comboBox, 167, SpringLayout.EAST, ButtonOne);
    buttonOnePanel.add(comboBox);
}

private void setupButtonTwoPanel()
{
    tabPane.addTab("Tab Two", null, buttonTwoPanel, null);
    buttonTwoPanel.setLayout(sl_buttonTwoPanel);
}

private void setupButtonTwo()
{
    ButtonTwo.addActionListener(new ActionListener() {
        public void actionPerformed(ActionEvent arg0) 
        {
            textArea.append("You pressed button two\n");
        }
    });
    sl_buttonTwoPanel.putConstraint(SpringLayout.NORTH, ButtonTwo, 99, SpringLayout.NORTH, buttonTwoPanel);
    sl_buttonTwoPanel.putConstraint(SpringLayout.WEST, ButtonTwo, 187, SpringLayout.WEST, buttonTwoPanel);
    buttonTwoPanel.add(ButtonTwo);
}

private void setupDisplayTextPanel()
{
    springLayout.putConstraint(SpringLayout.NORTH, displayTextPanel, 5, SpringLayout.SOUTH, tabPane);
    springLayout.putConstraint(SpringLayout.WEST, displayTextPanel, 5, SpringLayout.WEST, tabPane);
    springLayout.putConstraint(SpringLayout.SOUTH, displayTextPanel, 195, SpringLayout.SOUTH, tabPane);
    springLayout.putConstraint(SpringLayout.EAST, displayTextPanel, -5, SpringLayout.EAST, tabPane);
    getContentPane().add(displayTextPanel);
    displayTextPanel.setLayout(sl_displayTextPanel);
}

public void start()
{
    this.setSize(500, 500);
    this.setVisible(true);
}
}

前の質問以来、ウィンドウを閉じたときにプログラムを適切に終了する機能と、ボタンを押すとコンボボックス内で選択された値が出力されるコンボボックスの実装を実装することができました。

実装したい機能がいくつかありますが、先に進む方法がわかりません。

最初に達成したいこと、そしておそらく最も簡単なことは、ウィンドウのサイズを変更する機能を無効にすることです。サイズ変更時にフィールドを相対的に維持する簡単な方法を見つけることができないため、ウィンドウのサイズを変更する機能を排除することが次善の策です。

明確にしたいもう1つのオプションは、構築後にコンボボックスの内容を編集することです。理想的には、ボタンを押してフィールドにエントリを追加および削除できるようにしたいと考えています。ボックスの内容を設定できる方法が見つかりません。これを達成する唯一の方法は、変更が行われるたびに新しいコンボボックスを作成することです。これを行うより効率的な方法はありますか?

4

3 に答える 3

1

フレームを固定サイズにするには、使用するだけですsetResizable(false)

this.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
this.setResizable(false);// <- add this line

コンボボックスの内容を変更したい場合は、次のような多くの方法のいずれかを使用できます

  • removeItem(item)特定の要素を削除します
  • removeItemAt(index)指定された位置 (0 から数えて) の要素を削除します
  • addItem(item)コンボボックスの最後に新しいアイテムを追加します
  • insertItemAt(item, index)指定された場所にアイテムを挿入し、現在のアイテムを下に移動します
  • あなたはまたremoveAllItems()、それが何をするかを推測しています:)

そのクラスのドキュメントには多くの有用な情報があります

于 2013-07-02T16:09:32.870 に答える
1

JComboBox問題に関してはgetItemAt(int index)、アイテムを取得し (追加のゲッターがあります)、addItem(E item)リストに追加し、最後にリストremoveItemAt(int index)からアイテムを削除するために使用できます (追加の削除メソッドがあります)。setEditable(true)デフォルトではaJComboBoxは編集できないため、必ず呼び出すようにしてください。

さらに、ウィンドウを固定サイズにするには、それを呼び出しますsetResizable(false);

于 2013-07-02T16:01:00.493 に答える