2016-11-25 126 views
0
import java.awt.*; 
import java.awt.event.*; 
import javax.swing.*; 

public class Games { 

    private JFrame mainFrame; 
    private JLabel headerLabel; 
    private JLabel statusLabel; 
    private JPanel controlPanel; 

    public Games() { 
     prepareGUI(); 
    } 

    public static void main(String[] args) { 
     Games games = new Games(); 
     games.showTextFieldDemo(); 
    } 

    private void prepareGUI() { 
     mainFrame = new JFrame("The Game Database"); 
     mainFrame.setSize(1100, 800); 
     mainFrame.setLayout(new GridLayout(6, 1)); 
     mainFrame.addWindowListener(new WindowAdapter() { 
      public void windowClosing(WindowEvent windowEvent) { 
       System.exit(0); 
      } 
     }); 

     controlPanel = new JPanel(); 
     controlPanel.setLayout(new GridBagLayout()); 

     mainFrame.add(controlPanel); 
     mainFrame.setVisible(true); 
    } 

    private void showTextFieldDemo() { 

     String[] searchBasis = new String[] { "--Select--", "Genre", "Name of the Game", "Release Year" }; 

     JLabel lblGenre = new JLabel("Genre", JLabel.RIGHT); 
     JLabel lblName = new JLabel("Name", JLabel.CENTER); 
     JLabel lblReleaseYear = new JLabel("Release Year", JLabel.CENTER); 
     JLabel lblSearchBasis = new JLabel("Search Basis", JLabel.CENTER); 

     JButton btnSearch = new JButton("Search"); 
     JComboBox cmbBasis = new JComboBox<>(searchBasis); 

     final JTextField txtGenre = new JTextField(12); 
     final JTextField txtName = new JTextField(12); 
     final JTextField txtReleaseYear = new JTextField(12); 
     JTextArea txtContentArea = new JTextArea("hello"); 

     txtContentArea.setSize(400, 400); 

     lblGenre.setEnabled(false); 
     txtGenre.setEnabled(false); 
     lblName.setEnabled(false); 
     txtName.setEnabled(false); 
     lblReleaseYear.setEnabled(false); 
     txtReleaseYear.setEnabled(false); 

     cmbBasis.addActionListener(new ActionListener() { 

      @Override 
      public void actionPerformed(ActionEvent e) { 
       if (cmbBasis.getSelectedItem().toString().equalsIgnoreCase("Genre")) { 
        lblGenre.setEnabled(true); 
        txtGenre.setEnabled(true); 
        lblName.setEnabled(false); 
        txtName.setEnabled(false); 
        lblReleaseYear.setEnabled(false); 
        txtReleaseYear.setEnabled(false); 

       } else if (cmbBasis.getSelectedItem().toString().equalsIgnoreCase("Name of the game")) { 
        lblGenre.setEnabled(false); 
        txtGenre.setEnabled(false); 
        lblName.setEnabled(true); 
        txtName.setEnabled(true); 
        lblReleaseYear.setEnabled(false); 
        txtReleaseYear.setEnabled(false); 

       } else if (cmbBasis.getSelectedItem().toString().equalsIgnoreCase("Release Year")) { 
        lblGenre.setEnabled(false); 
        txtGenre.setEnabled(false); 
        lblName.setEnabled(false); 
        txtName.setEnabled(false); 
        lblReleaseYear.setEnabled(true); 
        txtReleaseYear.setEnabled(true); 

       } else if (cmbBasis.getSelectedItem().toString().equalsIgnoreCase("--Select--")) { 
        lblGenre.setEnabled(false); 
        txtGenre.setEnabled(false); 
        lblName.setEnabled(false); 
        txtName.setEnabled(false); 
        lblReleaseYear.setEnabled(false); 
        txtReleaseYear.setEnabled(false); 

       } 
      } 
     }); 

     btnSearch.addActionListener(new ActionListener() { 
      public void actionPerformed(ActionEvent e) { 
       String data = "Genre " + txtGenre.getText(); 
       data += ", Name: " + new String(txtName.getText()); 
       statusLabel.setText(data); 
      } 
     }); 

     GridBagConstraints constraint = new GridBagConstraints(); 
     constraint.gridx = 0; 
     constraint.gridy = 0; 
     constraint.insets = new Insets(3, 5, 3, 5); 

     controlPanel.add(lblSearchBasis, constraint); 
     constraint.gridx++; 

     controlPanel.add(cmbBasis, constraint); 

     constraint.gridy++; 
     constraint.gridx = 0; 
     constraint.insets = new Insets(3, 5, 3, 5); 

     controlPanel.add(lblGenre, constraint); 
     constraint.gridx++; 

     controlPanel.add(txtGenre, constraint); 
     constraint.gridx++; 

     controlPanel.add(lblName, constraint); 
     constraint.gridx++; 

     controlPanel.add(txtName, constraint); 
     constraint.gridx++; 

     controlPanel.add(lblReleaseYear, constraint); 
     constraint.gridx++; 

     controlPanel.add(txtReleaseYear, constraint); 
     constraint.gridx++; 

     controlPanel.add(btnSearch, constraint); 

     constraint.gridy++; 
     constraint.gridy++; 
     constraint.gridx = 0; 
     constraint.insets = new Insets(3, 5, 3, 5); 

     controlPanel.add(txtContentArea, constraint); 
     mainFrame.pack(); 

     mainFrame.setResizable(false); 
     mainFrame.setVisible(true); 
    } 

} 

添加的JTable我有上面的代碼,我需要的是一個自定義尺寸下面這3個文本框的3列的JTable,所以我可以有我的填充數據。我嘗試了很多方法,但並沒有從中得到太多...他們都是靜態的大小..請幫助我。謝謝。與自定義大小

+2

1)見[檢測/修復一個代碼塊的吊閉括號](HTTP://元。 stackexchange.com/q/251795/155831)對於一個問題,我不能再糾纏於此。 2)'JTextArea txtContentArea = new JTextArea(「hello」); txtContentArea.setSize(400,400);'最好在列和行中建議大小。 3)爲了更快地獲得更好的幫助,請發佈[MCVE]或[簡短,獨立,正確的示例](http://www.sscce.org/)。例如,這個問題似乎與佈局和組件大小有關,並且與是否啓用標籤無關。 –

+0

txtContentArea可以被刪除,它只是一個測試。 &所有的字段都被禁用,可以通過從兄弟上方的組合框中選擇值來啓用它們。 – Jawad

+0

*「txtContentArea可以被刪除」*哦,很好,所以**刪除它!**(而不是建議其他人通過代碼來檢查什麼是和這個佈局問題不相關)。另外請注意,你不會必須解釋,如果標籤的啓用狀態被類似刪除,則標籤的啓用狀態是無關緊要的。 –

回答

1

所有我需要的是一個自定義尺寸的3列的JTable

閱讀從Swing教程中的部分上Setting and Changing Column Widths有關信息。

一旦您設置列寬然後你可以使用:

table.setPreferredScrollableViewportSize(table.getPreferredSize());

設置JTable及其滾動窗格的首選大小。

mainFrame.addWindowListener(new WindowAdapter() { 

請勿使用WindowListener關閉幀。

相反,可以只設置JFrame的屬性在創建幀:

mainFrame.addWindowListener(new WindowAdapter() {