1

こんにちは私はスイングでプロジェクトをやっています。データベースから JTable にデータを表示したい
.JSplitpane を作成しました。パネル 1 で、Databse からの宗派データの検索ボタン、jLabel および JTextBox を作成しました... パネル 2 で、検索結果を JTable.my データベース クエリに表示したいのですが、すべてうまく機能しています..しかし、パネル 2 に JTable を表示できませんでした..誰でも問題を解決するのを手伝ってくれます。

public JFrame TimesheetReport(){ //最初の JFrame の作成

    final JFrame employeeFrame = new JFrame("Report");



    employeeFrame.setExtendedState(Frame.MAXIMIZED_BOTH);
        employeeFrame.setResizable(true)
    employeeFrame.setLocation(100,50);
    employeeFrame.setVisible(true);
            employeeFrame.setResizable(false);
    panel.setLayout(new FlowLayout());
    panel1.setLayout(new BorderLayout());
     employeeFrame.pack();
            final JLabel label1;
    final JLabel label2;
    final JTextField  text1;
    final JTextField text2;
    final JButton ADD;


    {

    label1 = new JLabel("From Date");
    text1 = new JTextField(12);

    label2 = new JLabel("End Date");
    text2 = new JTextField(12);
    JButton button2 = new JButton("calendar");

        ADD=new JButton("Search");
    ADD.setText("Search");
    ADD.addActionListener(new java.awt.event.ActionListener() {  

        @Override
        public void actionPerformed(java.awt.event.ActionEvent e) { 

                DbUtility TimesheetReport=new DbUtility();
                TimesheetReport. loadDriver();
                TimesheetReport.connect();

                String value=(text1.getText());
                String value2=(text2.getText());
                ResultSet rs=     TimesheetReport.executeSelectQuery14(value,value2);
                String    Activityid =null, EmployeeName = null,StartDate = null,EndDate=null,Activity=null,Project=null,Day1=null,Day2=null,Day3=null,Day4=null,Day5=null ;

            try {
            while (rs.next()) {
                Activityid  = rs.getString("Activityid");
                EmployeeName = rs.getString("EmployeeName");
                StartDate = rs.getString("StartDate");
                EndDate = rs.getString("EndDate");
                Activity = rs.getString("Activity");
                Project= rs.getString("Project");
                Day1 = rs.getString("Day1");
                Day2 = rs.getString("Day2");
                Day3 = rs.getString("Day3");
                Day4 = rs.getString("Day4");
                Day5 = rs.getString("Day5");

                String[] columnNames = {"Activityid","EmployeeName", "StatrDate","EndDate", "Activity","Project","Day1","Day2","Day3","Day3","Day4","Day5"};
                String data[][] = {{Activityid,EmployeeName, StartDate,EndDate,Activity,Project,Day1,Day2,Day3,Day4,Day5}};
                System.out.println(Activityid+" "+EmployeeName+" "+StartDate+"" +EndDate+""+Activity+" "+Project+""+Day1+""+Day2+""+Day3+""+Day4+""+Day5);
                final DefaultTableModel model = new DefaultTableModel(data, columnNames);
                table2= new JTable(model);
                table2.setRowHeight( 70 );
                table2.setFillsViewportHeight(true);
                JTextField field = new JTextField();
                field.setForeground(Color.RED);
                field.setBackground(Color.RED);
                table2.getTableHeader().setPreferredSize(new Dimension(50,50));
                table2.getTableHeader().setBackground(Color.blue);
                table2.getTableHeader().setForeground(Color.white);
                table2.getTableHeader().setFont(new Font("Serif", Font.BOLD, 15)); 
                table2.getTableHeader().setOpaque(true);
                table2.getModel();
                table2.setForeground(Color.blue);
                table2.setBackground(Color.white);
                table2.setGridColor(Color.MAGENTA);
                table2.setShowGrid(true);
                    JScrollPane pane = new JScrollPane(table2);
                    panel1.add(pane);




        }
            } catch (SQLException e1) {

                e1.printStackTrace();
                                }  

                 }
                     });


        JSplitPane splitPane = new      JSplitPane(JSplitPane.HORIZONTAL_SPLIT,panel,panel1 );
        splitPane.setDividerLocation(300);
        Dimension minimumSize = new Dimension(250, 0);
        panel.setMinimumSize(minimumSize);
        employeeFrame.add(splitPane);
         pane.add(panel1);
         panel.add(label1);

         label1.setForeground(Color.white);
         panel.add(text1);

         panel.add(label2);

         label2.setForeground(Color.white);
         panel.add( text2);

         panel.add(ADD);

          }



      return employeeFrame;

       }
4

2 に答える 2

3

しかし、JTable を panel2 に表示できませんでした...誰でも問題の解決を手伝ってくれます。

あなたのコードはSSCCE形式ではありません...単純なコピーアンドペーストではコンパイルされtable2ず、指定されたコードのメソッドスコープ内で宣言されていないため、エラーが発生しpanel2ますpanel1. ..

解決:

1) null/を使用しないでAbsolute LayoutManagerください。

読んでください:

2) なぜ追加する必要があるJTableのですかpanel1(または質問で引用されているようにpanel2)? どちらかといえば、ビューポートとしてJScrollPaneを持つを追加します。JTablepanel1table2JScrollPaneJScrollPaneJSplitPane

JScrollPane pane = new JScrollPane(table2);
JSplitPane splitPane = new JSplitPane(JSplitPane.HORIZONTAL_SPLIT, panel, pane);

別の方法として add JTabletoJScrollPaneと add JScrollPaneto panel1with をBorderLayout 使用JPanelすると、コンテナーのサイズに拡張されます。

JPanel panel1=new JPanel(new BorderLayout());
....
JScrollPane pane = new JScrollPane(table2);
panel1.add(pane);
JSplitPane splitPane = new JSplitPane(JSplitPane.HORIZONTAL_SPLIT, panel, panel1);

3)また、あなたがビアを最大化しているのを見ているのでJFrame

JFrame#setExtendedState(JFrame.MAXIMIZED_BOTH);

LayoutManagerJFrame のサイズが変更されたときに、コンポーネントのサイズを自動的に変更する を使用することをお勧めします。つまりBorderLayoutGridLayoutGridBagLayoutは頭に浮かぶいくつかです。

4) また、JFrameすべてのコンポーネントが追加される前に可視を設定しないでください。

5)ブロック経由でEvent Dispatch Threadに Swing コンポーネントを作成します。SwingUtilities.invokeLater(Runnable r)

6)コンポーネントを追加した後、可視に設定する前にpack()onを呼び出すことを忘れないでください。JFrame

7) また、このコメントは疑わしいと思い//Creating 1st JFrameます. むしろ、CardLayoutまたはを使用してJDialogください。

setLocation8)完全に拡張されたの必要性がわかりませんJFrame

修正を加えたコードを次に示します (すべてのコンポーネントのデフォルトLayoutManagers を使用しただけです (panel1使用BorderLayoutするものを除いてJPanel、コンテナー サイズに拡張されます)。

import java.awt.BorderLayout;
import java.awt.Color;
import java.awt.Dimension;
import java.awt.EventQueue;
import java.awt.Frame;
import javax.swing.JButton;
import javax.swing.JFrame;
import javax.swing.JLabel;
import javax.swing.JPanel;
import javax.swing.JScrollPane;
import javax.swing.JSplitPane;
import javax.swing.JTable;
import javax.swing.JTextField;

public class Test {

    public static void main(String[] args) {
        EventQueue.invokeLater(new Runnable() {
            @Override
            public void run() {
                new Test();
            }
        });
    }

    public Test() {
        createAndShowGui();
    }

    public void createAndShowGui() {

        final JFrame employeeFrame = new JFrame("Report");
        employeeFrame.setDefaultCloseOperation(JFrame.DISPOSE_ON_CLOSE);

        final JPanel panel = new JPanel() {
            @Override
            public Dimension getMinimumSize() {
                return new Dimension(250, 0);
            }
        };
        final JTable table2 = new JTable(new String[][]{
                    {"one", "two", "three"},
                    {"one", "two", "three"},
                    {"one", "two", "three"}
                }, new String[]{"col1", "col2", "col3"});

        JPanel panel1 = new JPanel(new BorderLayout());//panel which holds jtable
        final JLabel label1;
        final JLabel label2;
        final JTextField text1;
        final JTextField text2;
        final JButton ADD;

        label1 = new JLabel("From Date");
        text1 = new JTextField(12);
        label2 = new JLabel("End Date");
        text2 = new JTextField(12);
        JButton button2 = new JButton("calendar");
        ADD = new JButton("Search");
        ADD.setText("Search");
        ADD.addActionListener(new java.awt.event.ActionListener() {
            @Override
            public void actionPerformed(java.awt.event.ActionEvent e) {
                /*
                 DbUtility createAndShowGui = new DbUtility();
                 createAndShowGui.loadDriver();
                 createAndShowGui.connect();

                 String value = (text1.getText());
                 String value2 = (text2.getText());
                 ResultSet rs = createAndShowGui.executeSelectQuery14(value, value2);
                 String Activityid = null, EmployeeName = null, StartDate = null, EndDate = null, Activity = null, Project = null, Day1 = null, Day2 = null, Day3 = null, Day4 = null, Day5 = null;

                 try {
                 while (rs.next()) {
                 Activityid = rs.getString("Activityid");
                 EmployeeName = rs.getString("EmployeeName");
                 StartDate = rs.getString("StartDate");
                 EndDate = rs.getString("EndDate");
                 Activity = rs.getString("Activity");
                 Project = rs.getString("Project");
                 Day1 = rs.getString("Day1");
                 Day2 = rs.getString("Day2");
                 Day3 = rs.getString("Day3");
                 Day4 = rs.getString("Day4");
                 Day5 = rs.getString("Day5");

                 String[] columnNames = {"Activityid", "EmployeeName", "StatrDate", "EndDate", "Activity", "Project", "Day1", "Day2", "Day3", "Day3", "Day4", "Day5"};
                 String data[][] = {{Activityid, EmployeeName, StartDate, EndDate, Activity, Project, Day1, Day2, Day3, Day4, Day5}};
                 System.out.println(Activityid + " " + EmployeeName + " " + StartDate + "" + EndDate + "" + Activity + " " + Project + "" + Day1 + "" + Day2 + "" + Day3 + "" + Day4 + "" + Day5);
                 final DefaultTableModel model = new DefaultTableModel(data, columnNames);
                 table2 = new JTable(model);
                 table2.setRowHeight(70);
                 table2.setFillsViewportHeight(true);
                 JTextField field = new JTextField();
                 field.setForeground(Color.RED);
                 field.setBackground(Color.RED);
                 table2.getTableHeader().setPreferredSize(new Dimension(50, 50));
                 table2.getTableHeader().setBackground(Color.blue);
                 table2.getTableHeader().setForeground(Color.white);
                 table2.getTableHeader().setFont(new Font("Serif", Font.BOLD, 15));
                 table2.getTableHeader().setOpaque(true);
                 table2.getModel();
                 table2.setForeground(Color.blue);
                 table2.setBackground(Color.white);
                 table2.setGridColor(Color.MAGENTA);
                 table2.setShowGrid(true);

                 }
                 } catch (SQLException e1) {
                 e1.printStackTrace();
                 }
                 */
            }
        });

        panel.add(label1);
        label1.setForeground(Color.white);
        panel.add(text1);
        panel.add(label2);
        label2.setForeground(Color.white);
        panel.add(text2);
        panel.add(ADD);

        JScrollPane pane = new JScrollPane(table2);
        panel1.add(pane);
        JSplitPane splitPane = new JSplitPane(JSplitPane.HORIZONTAL_SPLIT, panel, panel1);
        splitPane.setDividerLocation(300);

        employeeFrame.add(splitPane);

        employeeFrame.setExtendedState(Frame.MAXIMIZED_BOTH);
        //employeeFrame.setLocation(100, 50);
        employeeFrame.pack();

        employeeFrame.setVisible(true);
        employeeFrame.setResizable(false);//or else it wont work nicely withn JFrame#setExtendedState
    }
}
于 2013-02-15T12:41:13.940 に答える
0

あなたのコードを見ると、実際に SplitPane に追加している Panel または Pane に Table を配置している場所が見つかりません。

于 2013-02-15T12:43:43.167 に答える