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,所以我可以有我的填充數據。我嘗試了很多方法,但並沒有從中得到太多...他們都是靜態的大小..請幫助我。謝謝。與自定義大小
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可以被刪除」*哦,很好,所以**刪除它!**(而不是建議其他人通過代碼來檢查什麼是和這個佈局問題不相關)。另外請注意,你不會必須解釋,如果標籤的啓用狀態被類似刪除,則標籤的啓用狀態是無關緊要的。 –