gpt4 book ai didi

java - 使用 Java 1.6 中的 Swing 库构建简单的 GUI

转载 作者:塔克拉玛干 更新时间:2023-11-01 21:35:43 24 4
gpt4 key购买 nike

我正在尝试使用 Swing 库构建一个简单的 GUI。我不明白为什么我的表要删除以前添加到 GUI 的所有内容,然后才创建表。我假设它是 addMainPanel 中的某个命令,但我不确定是哪个。非常感谢您的建议。

package fuelConsumption;

import java.awt.BorderLayout;
import java.awt.Dimension;
import java.awt.GridBagConstraints;
import java.awt.GridBagLayout;
import java.awt.event.ActionEvent;
import java.awt.event.ActionListener;

import javax.swing.*;

public class LogView implements ActionListener {

private Log myLog;
private JFrame frame;

public LogView (String frameName) {
this.frame = new JFrame(frameName);
this.frame.setPreferredSize(new Dimension(500,500));
this.frame.getContentPane().setLayout(new BorderLayout());

this.addMainPanel(frame);
this.addTable(frame);
//addMenu(frame);
//addToolBar(frame);

this.frame.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
this.frame.pack();
this.frame.setVisible(true);
}

private void addTable(JFrame frame2) {
String[] columnNames = {"date",
"station",
"fuel grade",
"fuel amount",
"fuel unit cost",
"fuel cost",
"trip distance"};
Object[][] data = {
{"Shell", 89, 40, 109.5, "bla", 100, 123}
};

JTable table = new JTable(data, columnNames);
table.setPreferredScrollableViewportSize(new Dimension(500, 70));
//table.setFillsViewportHeight(true);

//Create the scroll pane and add the table to it.
JScrollPane scrollPane = new JScrollPane(table);

//Add the scroll pane to this panel.
//this.frame.setContentPane(scrollPane);
frame2.getContentPane().add(scrollPane);
}

private void addMainPanel(JFrame frame2) {
// TODO Auto-generated method stub

JPanel panel = new JPanel(new GridBagLayout());

GridBagConstraints c = new GridBagConstraints();
c.gridx = 0;
c.gridy = 0;
c.gridwidth = 5;
c.ipady = 50;
c.anchor = GridBagConstraints.LINE_START;
c.weightx = 0.5;
c.weighty = 0.5;
JLabel label = new JLabel("");
panel.add(label,c);

label = new JLabel("Info");
c = new GridBagConstraints();
c.gridx = 0;
c.gridy = 1;
c.anchor = GridBagConstraints.LINE_START;
c.weightx = 0.5;
c.weighty = 0.5;
panel.add(label,c);

label = new JLabel("Label");
c = new GridBagConstraints();
c.gridx = 2;
c.gridy = 1;
c.anchor = GridBagConstraints.LINE_START;
c.weightx = 0.5;
c.weighty = 0.5;
panel.add(label,c);

label = new JLabel("Comments");
c = new GridBagConstraints();
c.gridx = 0;
c.gridy = 2;
c.anchor = GridBagConstraints.FIRST_LINE_START;
c.weightx = 0.5;
c.weighty = 0.5;
panel.add(label,c);

JTextArea textArea = new JTextArea(4,30);
JScrollPane textScroll = new JScrollPane(textArea);
c = new GridBagConstraints();
c.gridx = 1;
c.gridy = 2;
c.gridwidth = 4;
c.ipadx = 30;
c.ipady = 50;
c.anchor = GridBagConstraints.FIRST_LINE_START;
c.fill = GridBagConstraints.HORIZONTAL;
c.weightx = 0.5;
c.weighty = 0.5;
panel.add(textScroll,c);

JButton button = new JButton("Edit");
button.addActionListener(this);
button.setActionCommand("Edit");
c = new GridBagConstraints();
c.gridx = 1;
c.gridy = 3;
c.fill = GridBagConstraints.HORIZONTAL;
c.weightx = 0.5;
c.weighty = 0.5;
panel.add(button,c);

button = new JButton("Previous");
button.addActionListener(this);
button.setActionCommand("Previous");
c = new GridBagConstraints();
c.gridx = 2;
c.gridy = 3;
c.weightx = 0.5;
c.weighty = 0.5;
panel.add(button,c);

button = new JButton("Next");
button.addActionListener(this);
button.setActionCommand("Next");
c = new GridBagConstraints();
c.gridx = 3;
c.gridy = 3;
// c.weightx = 0.5;
// c.weighty = 0.5;
panel.add(button,c);

frame2.getContentPane().add(panel);
}

public static void main(String [] args){
new LogView("Fuel Consumption");
}

@Override
public void actionPerformed(ActionEvent e) {
// TODO Auto-generated method stub

}
}

最佳答案

您的 GUI 可能是:

enter image description here

如果你改变

private void addTable(JFrame frame2) {private void addTable() {

frame2.getContentPane().add(scrollPane);frame.add(scrollPane, BorderLayout.CENTER);

到:

private void addMainPanel(JFrame frame2) {private void addMainPanel() {

frame2.getContentPane().add(panel);frame.add(panel, BorderLayout.SOUTH);

因为在 BorderLayout只有一个JComponent可以放置在其中一个区域中,因为没有 BorderLayout 常量的定义,那么 JComponent 将放置在 BorderLayout.CENTER 区域中。

3)

那你就得改

this.addMainPanel(frame);
this.addTable(frame);

this.addMainPanel();
this.addTable();

关于java - 使用 Java 1.6 中的 Swing 库构建简单的 GUI,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/7464338/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com