2016-11-25 66 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() {