1

我想在我的 GUI 上有一个滚动窗格。我想要“可滚动”的区域是一个没有任何 LayoutManager 的 JPanel,因为内容介于静态和动态之间......但也许我的代码的一部分会有所帮助

这里是:

pane = getContentPane();

    jpane = new JPanel();
//  jpane.setBounds(0, 75, 680, 255);
    jpane.setLayout(null);

    jsp = new JScrollPane(jpane, ScrollPaneConstants.VERTICAL_SCROLLBAR_AS_NEEDED, ScrollPaneConstants.HORIZONTAL_SCROLLBAR_NEVER);
    jsp.setBounds(0, 75, 680, 255);
    jsp.setPreferredSize(new Dimension(680,255));
pane.add(jsp);

我的 JPanel 将充满这段代码......

for(int i = 0; i < Integer.parseInt(spaltenzahl.getText()); i++) {
        JTextField spaltennamen_feld = new JTextField();
        spaltennamen_feld.setBounds(10, 10+35*i, 150, 25);
        spaltennamen_arraylist.add(spaltennamen_feld);

        JComboBox<String> datentypen_box = new JComboBox<String>(types);
        datentypen_box.setBounds(170, 10+35*i, 150, 25);
        datentypen_arraylist.add(datentypen_box);

        JComboBox<String> datenzusatz_box = new JComboBox<String>(comb);
        datenzusatz_box.setBounds(330, 10+35*i, 100, 25);
        datenzusatz_arraylist.add(datenzusatz_box);

        jpane.add(spaltennamen_feld);
        jpane.add(datentypen_box);
        jpane.add(datenzusatz_box);
    }

问题:我无法添加我的 GUI 的屏幕截图,因为缺少 ehr...我在这里忘记了这个必需的东西的名称 ^_^ 但我真正的问题是:溢出的内容不会显示在我的 JPanel 和我的 ScrollPane 不滚动。任何想法?

非常感谢 :)

4

1 回答 1

2

您的解决方案不是上述任何一种。我认为您想使用一个 JTable,一个包含三列,最后两个其编辑器是 JComboBox。


编辑
例如:

import java.util.Random;
import java.util.Vector;
import javax.swing.*;
import javax.swing.table.DefaultTableModel;

public class Foo2 {

   private static void createAndShowGui() {
      String[] columns = {"Spaltennamen", " Datentypen", "Datenzusatz"};
      String[] dataStrings1 = { "Monday", "Tuesday", "Wednesday", "Thursday", "Friday" };
      String[] dataStrings2 = {"One", "Two", "Three", "Four", "Five"};
      Random random = new Random();

      DefaultTableModel model = new DefaultTableModel(columns, 0);
      int spaltenzahl = 10;  // this can change
      for (int i = 0; i < spaltenzahl; i++) {
         Vector<String> rowData = new Vector<>();
         rowData.add("Row Number " + (i + 1));
         rowData.add(dataStrings1[random.nextInt(dataStrings1.length)]);
         rowData.add(dataStrings2[random.nextInt(dataStrings2.length)]);
         model.addRow(rowData);
      }

      JTable table = new JTable(model);
      table.getColumn(columns[1]).setCellEditor(new DefaultCellEditor(new JComboBox<>(dataStrings1)));
      table.getColumn(columns[2]).setCellEditor(new DefaultCellEditor(new JComboBox<>(dataStrings2)));
      JScrollPane scrollPane = new JScrollPane(table);


      JFrame frame = new JFrame("Foo");
      frame.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
      frame.getContentPane().add(scrollPane);
      frame.pack();
      frame.setLocationByPlatform(true);
      frame.setVisible(true);
   }

   public static void main(String[] args) {
      SwingUtilities.invokeLater(new Runnable() {
         public void run() {
            createAndShowGui();
         }
      });
   }
}
于 2014-01-15T23:01:49.603 回答