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);
}
}
私は上記のコードを持っています。これらの3つのテキストフィールドの下にカスタムサイズの3列のJTableが必要です。そこにデータを入力できます。私は多くの方法を試しましたが、それから多くを得ることはありません...彼らはすべて静的なサイズです..親切に私を助けてください。ありがとう。カスタムサイズのJTableを追加する
1)[コードブロックの吊り閉じ括弧のための検出/修正]を参照してくださいます(http://メタ。 stackexchange.com/q/251795/155831)私はもはや悩まされることはありませんでした。 2) 'JTextArea txtContentArea = new JTextArea(" hello "); txtContentArea.setSize(400、400); '列と行のサイズを推奨する方がよい。 3)もっと早い時期に、[MCVE]または[短く、自己完結型の正しい例](http://www.sscce.org/)を投稿してください。たとえば、この問題は、レイアウトとコンポーネントのサイズと関係があり、ラベルが有効であるかどうかとは関係がないようです。 –
txtContentAreaはテストのためだけに削除できます。 &すべてのフィールドが無効になっている場合、兄の上のコンボボックスから値を選択することで有効にすることができます。 – Jawad
* "txtContentAreaを削除することができます" *いいので、削除してください** **(他の人がこのレイアウトの問題と何が関係しているのかわからないようにコードを練習してください)。同様に削除されたラベルの有効状態は無関係であると説明しなければなりませんでした。 –