gpt4 book ai didi

java - JTabbedPane 中的选项卡会影响内容

转载 作者:行者123 更新时间:2023-12-01 14:35:42 26 4
gpt4 key购买 nike

如果选项卡的内容按预期工作,为什么 JTabbedPane 中选项卡的顺序会影响?

我正在编写我的第一个高级应用程序,但我的 JTabbedPane 遇到了一些问题。这是我所拥有的:

public ProjectTracker() {
initialize();
newJobTab();
newUpdateTab();
newReportsTab();
}

newJobTab()、newUpdateTab() 和 newReportsTab() 被放置到 initialize() 方法内的 JTabbed Pane 中。每个都创建一个我制作的 GUI 类的实例。它基本上有一堆文本字段和组合框等,它们与数据库交互以填充字段或从字段收集信息。

选项卡上按钮的功能是三者之间的主要区别。单独来看,每个选项卡都按照我的预期工作。当我将它们放在选项卡式 Pane 中时,只有第三个选项卡可以正常工作。如果我调换顺序,结果是一样的。无论第三个选项卡是哪一个,都是唯一能按我想要的方式运行的选项卡。

这是我对原始帖子的修订...现在带有代码。

public class SampleTracker {

private JFrame frmProjectTracker;
private JTabbedPane tabbedPane;
public String Title;

SampleTJV newJobPanel;
SampleTJV updatePanel;

/**
* Launch the application.
*/
public static void main(String[] args) {
EventQueue.invokeLater(new Runnable() {
public void run() {
try {
SampleTracker window = new SampleTracker();
window.frmProjectTracker.setVisible(true);
} catch (Exception e) {
e.printStackTrace();
}
}
});
}

/**
* Create the application.
*/
public SampleTracker() {
initialize();
newJobTab();
newUpdateTab();
}

/**
* Initialize the contents of the frame.
*/
private void initialize() {
frmProjectTracker = new JFrame();
frmProjectTracker.setBounds(100, 100, 662, 461);
frmProjectTracker.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
frmProjectTracker.getContentPane().setLayout(new FormLayout(new ColumnSpec[] {
ColumnSpec.decode("662px"),},
new RowSpec[] {
RowSpec.decode("50px"),
RowSpec.decode("389px"),}));

tabbedPane = new JTabbedPane(JTabbedPane.TOP);
frmProjectTracker.getContentPane().add(tabbedPane, "1, 2, fill, fill");
}


private void newJobTab(){
newJobPanel = new SampleTJV();
newJobPanel.UpdateButton.setText("Enter Job");
tabbedPane.addTab("Enter New Job", null, newJobPanel, null);
newJobPanel.UpdateButton.addActionListener(new ActionListener() {
public void actionPerformed(ActionEvent arg0) {
newJobPanel.collectInfo();
Title = newJobPanel.Title;
//Here the connection to DB is made and the Title is written to DB
newJobPanel.newJobField.setText(Title);
}
});
}

private void newUpdateTab(){
updatePanel = new SampleTJV();
newJobPanel.UpdateButton.setText("Update Job");
tabbedPane.addTab("Update Job", null, updatePanel, null);
updatePanel.UpdateButton.addActionListener(new ActionListener() {
public void actionPerformed(ActionEvent arg0) {
updatePanel.collectInfo();
Title = updatePanel.Title;
updatePanel.updateJobField.setText(Title);
}
});
}

}

public class SampleTJV extends JPanel {

private static final long serialVersionUID = 1L;
public static JTextField TitleField;

public String Title;
public JButton UpdateButton;
public JTextField newJobField;
public JTextField updateJobField;
/**
* Create the panel.
*/
public SampleTJV() {
setLayout(null);
TitleField = new JTextField();

TitleField.setColumns(10);
TitleField.setBounds(109, 6, 134, 28);
add(TitleField);

newJobField = new JTextField();
newJobField.setBounds(171, 79, 134, 28);
add(newJobField);
newJobField.setColumns(10);

UpdateButton = new JButton("Update Job");
UpdateButton.setBounds(267, 7, 112, 29);
add(UpdateButton);

JLabel lblNewJobResult = new JLabel("New Job Result");
lblNewJobResult.setBounds(47, 85, 112, 16);
add(lblNewJobResult);

JLabel lblUpdateJobResult = new JLabel("Update Job Result");
lblUpdateJobResult.setBounds(47, 125, 112, 16);
add(lblUpdateJobResult);

updateJobField = new JTextField();
updateJobField.setColumns(10);
updateJobField.setBounds(171, 119, 134, 28);
add(updateJobField);

}

public void collectInfo(){
Title = TitleField.getText();
}

}

最佳答案

以下是复制错误:

private void newUpdateTab(){
updatePanel = new SampleTJV();
newJobPanel.UpdateButton.setText("Update Job");

newJobPanel 可能不是有意的。

<小时/>

静态 GUI 字段也是错误的:

static JTextField TitleField;

关于java - JTabbedPane 中的选项卡会影响内容,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/16505154/

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