2016-11-25 4 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); 
    } 

} 

Ich habe den obigen Code, alles was ich brauche, ist eine benutzerdefinierte Größe 3 Spalte JTable unter diesen 3 Textfeldern, so dass ich meine Daten dort bevölkern kann. Ich habe viele Möglichkeiten ausprobiert, aber davon habe ich nicht viel bekommen ... sie sind alle in der Größe statisch ... bitte hilf mir. Vielen Dank.Hinzufügen von JTable mit benutzerdefinierter Größe

+2

1) Siehe [Erkennung/Korrektur für das Aufhängen der Nähe Klammer eines Codeblocks] (http: // Meta. stackexchange.com/q/251795/155831) für ein Problem, das ich nicht länger gestört werden könnte. 2) 'JTextArea txtContentArea = neuer JTextArea (" Hallo "); txtContentArea.setSize (400, 400); 'Besser eine Größe in Spalten und Zeilen vorschlagen. 3) Um eine bessere Hilfe zu erhalten, sollten Sie ein [MCVE] oder [Short, Self Contained, Correct Example] (http://www.sscce.org/) veröffentlichen. Dieses Problem scheint beispielsweise alles mit Layouts und Komponentengrößen zu tun zu haben und nichts damit zu tun zu haben, ob Etiketten aktiviert sind oder nicht. –

+0

txtContentArea kann entfernt werden, es ist nur für einen Test. & alle Felder sind deaktiviert, sie können aktiviert werden, indem Sie die Werte aus dem Kombinationsfeld über Bruder auswählen. – Jawad

+0

* "txtContentArea kann entfernt werden" * Oh gut, also ** entferne es! ** (Anstatt anderen Leuten zu empfehlen, durch den Code zu gehen, um herauszufinden, was für dieses Layoutproblem relevant ist und ist) mussten erklären, dass der aktivierte Zustand von Labels irrelevant war, wenn sie in ähnlicher Weise entfernt wurden. –

Antwort

1

alles was ich brauche ist eine benutzerdefinierte 3 Spalte JTable

Lesen Sie den Abschnitt aus der Swing-Tutorial dazu auf Setting and Changing Column Widths für Informationen bemessen.

Sobald Sie die Spaltenbreiten festgelegt haben, können Sie dann verwenden:

table.setPreferredScrollableViewportSize (table.getPreferredSize());

Zum Festlegen der bevorzugten Größe der JTable und ihres Bildlauffensters.

mainFrame.addWindowListener(new WindowAdapter() { 

Verwenden Sie keinen WindowListener, um den Rahmen zu schließen.

Stattdessen können Sie einstellen, nur eine Eigenschaft des JFrame, wenn Sie den Rahmen zu erstellen:

mainFrame.addWindowListener(new WindowAdapter() { 
Verwandte Themen