0

Swing で作業するのは初めてです。おそらく私は何か深刻な問題を抱えています。
各タブがある 1 つのタブ付き UI がありますJPanel(このタブは に追加されますJTabbedPane)。ユーザー入力に基づいてJTextField、その中に sの数を追加します。スクロール可能JPanelにする必要があります。JPanel私は次の解決策を試しました:

  • Jscrollpaneに追加Tab
  • Jpanel innerPanelに新規追加JscrollPane
  • すべてのテキストフィールドを追加innerPanel

textFields は表示されません。

public Tab extends JPanel {

    private TipTailoringTab() {
        JPanel innerPanel =new JPanel();

        int y_cord = 20;
        for (int i = 0; i < USER_INPUT; i++) {
                JTextField TextField = new JTextField();
                TextField.setBounds(42, y_cord, 100, 20);
                innerPanel.add(TextField);
                y_cord = y_cord + 40;
        }
        Dimension preferredSize = new Dimension(400, 600);
        innerPanel.setPreferredSize(preferredSize);
        JScrollPane sPane = new JScrollPane(innerPanel);
        Dimension preferredSize1 = new Dimension(400, 300);
        sPane.setPreferredSize(preferredSize1);
        this.add(sPane);
    }
}

どんな助けでも大歓迎です。


ループごとに編集して、1 つの TextField、1 つの Slider、On Label を作成します。nが大きい場合、次の構造が垂直にスクロール可能になりたい
TextField1 Slider1 Label1
TextField2 Slider2 Label2

TextFieldn Slidern Labeln

4

1 に答える 1

1

これは非常に簡単な例です。スクロールバーが強制的に表示/必要になるように、優先サイズを設定しました。ご不明な点がございましたら、お尋ねください。

import java.awt.BorderLayout;
import java.awt.Dimension;
import javax.swing.*;

public class Test {
    private static final int USER_INPUT = 10;

    public Test() {
        JFrame frame = new JFrame();
        frame.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
        frame.setResizable(false);


        JTabbedPane tabs = new JTabbedPane();
        tabs.setTabLayoutPolicy(JTabbedPane.SCROLL_TAB_LAYOUT);
        for (int i = 0; i < 5; i++) {
            tabs.addTab("Tab"+i, new TabPanel());
        }

        frame.add(tabs);
        frame.pack();
        frame.setVisible(true);
    }

    class TabPanel extends JPanel {    
        public TabPanel() {
            JPanel innerPanel = new JPanel();
            innerPanel.setLayout(new BoxLayout(innerPanel, BoxLayout.Y_AXIS));

            for (int i = 0; i < USER_INPUT; i++) {
                JPanel p = new JPanel(new BorderLayout());
                JLabel label = new JLabel("Label"+i);
                JTextField textArea = new JTextField();
                p.add(label, BorderLayout.NORTH);
                p.add(textArea, BorderLayout.CENTER);
                innerPanel.add(p);
            }

            JScrollPane scrollPane = new JScrollPane(innerPanel);
            scrollPane.setPreferredSize(new Dimension(400, 200));
            this.add(scrollPane);
        }
    }

    public static void main(String[] args) {
        new Test();
    }
}
于 2013-10-04T23:13:22.460 に答える