我写了下面的代码,里面有一个文本字段和一个按钮.输入字符并按下按钮后,将创建一个标签,其标题与在字段中输入的标题相同.
几个选项卡可以以相同的方式创建.....现在再次在新选项卡中,文本字段和按钮存在一个长文本窗格以显示结果....
我想在每个标签的文本窗格中显示输入到文本字段的文本...
现在请带领我学习如何以及在哪里将监听器放在选项卡的按钮上......并推荐任何其他必需的监听器(我认为应该有另一个监听器来指导我关注或选择的选项卡).
应该提到的是,我已将这些选项卡添加到数组列表中以供任何重用,但我不知道我是否正确或如何使用它?
package test;
import java.awt.event.ActionEvent;
import java.awt.event.ActionListener;
import java.util.ArrayList;
import javax.swing.JButton;
import javax.swing.JFrame;
import javax.swing.JPanel;
import javax.swing.JTabbedPane;
import javax.swing.JTextField;
import javax.swing.JTextPane;
public class TestGUI extends JFrame {
private JTextField jTextField1;
private JButton jButton1;
static ArrayList<JPanel> ary = new ArrayList<JPanel>();
private int tabIndex = 0;
static int index = 0;
private JTabbedPane tabbedPane;
/**
* @param args
*/
public TestGUI() {
super("Testing Tab Frame");
setLayout(null);
Handler but1 = new Handler();
jTextField1 = new JTextField();
jTextField1.setVisible(true);
jTextField1.setBounds(12, 12, …Run Code Online (Sandbox Code Playgroud) 我正在尝试创建一个模拟记录存储的简单GUI.我还处于起步阶段.
当我尝试添加文本来描述用户期望在文本字段中输入的内容时,我遇到了麻烦.
另外,我也无法将每个文本字段放在自己的行上.换句话说,如果一行中有两个文本字段的空间,那么它将显示在一行中,并且我试图在其自己的行上显示每个文本字段.
这是我到目前为止所尝试的:
item2 = new JTextField("sample text");
Run Code Online (Sandbox Code Playgroud)
但是上面的代码只是在文本字段中添加了默认文本,这不是我需要的:/
我提前感谢所有的帮助.
public class MyClass extends JFrame{
private JTextField item1;
private JTextField item2;
public MyClass(){
super("Matt's World of Music");
setLayout(new FlowLayout());
item1 = new JTextField();
item2 = new JTextField();
add(item1);
add(item2);
thehandler handler = new thehandler();
item1.addActionListener(handler);
item2.addActionListener(handler);
}
}
Run Code Online (Sandbox Code Playgroud) ......它是如何发生的(猜测允许,当然:-)
@Override
public int convertChildIndexToModel(int modelIndex) {
return getRowSorter() != null ? getRowSorter()
.convertRowIndexToView(modelIndex) : modelIndex;
}
@Override
public int convertChildIndexToView(int viewIndex) {
return getRowSorter() != null ? getRowSorter()
.convertRowIndexToModel(viewIndex) : viewIndex;
}
Run Code Online (Sandbox Code Playgroud)
是的,白痴是我;-)
我在想.我有一个带有servlet的简单Java Web项目.当没有用户使用它时(我在GlassFish上本地托管它)我仍然在进程的内存使用中看到锯齿模式.我似乎无法理解JVM正在做什么?我理解JVM使用的内存的正常流程.堆正在填充应用程序正在创建的对象.在某个时刻,堆到达垃圾收集器进入的点,这将删除所有不再使用的"缓存"对象,以便可以创建新对象并填充堆大小.
我想知道的是,JVM在空闲时一直在做什么? 
编辑:
就像我在评论中说的那样.我在Eclipse中创建了一个非常简单的Java应用程序,它显示了一个Swing窗口,上面写着'hello world'.当我在Java VisualVM中观察JVM的内存使用情况时,我看到了相同的锯齿模式.
编辑#2:因为它看起来像一个bug我已经在javaFx-jira中发布了一个错误报告.您必须拥有一个帐户才能访问该问题.如果有新信息,我会保持这篇文章是最新的.
原帖: 我有一个带按钮和TreeView的简单UI.如果按下按钮,则应该在TreeView中添加一个新项目.该项目一出现在树中就应该可以编辑.
import javafx.fxml.FXML;
import javafx.scene.control.TreeItem;
import javafx.scene.control.TreeView;
import javafx.scene.control.cell.TextFieldTreeCell;
import javafx.util.converter.DefaultStringConverter;
public class ClientController {
@FXML
private TreeView<String> tree;
public void initialize() {
tree.setEditable(true);
tree.setCellFactory(p -> new TextFieldTreeCell<>(new DefaultStringConverter()));
TreeItem<String> root = new TreeItem<>();
root.setValue("Items");
root.setExpanded(true);
tree.setRoot(root);
}
@FXML
public void createItem() {
TreeItem<String> newItem = new TreeItem<>();
newItem.setValue("Item " + tree.getExpandedItemCount());
tree.getRoot().getChildren().add(newItem);
tree.requestFocus();
tree.getSelectionModel().select(newItem);
tree.edit(newItem);
}
}
Run Code Online (Sandbox Code Playgroud)
我正在使用的CellFactory是JavaFX api的一部分.
如果我查看api文档(TreeView#edit),我的网站上没什么可做的.
我通过谷歌找到类似的例子很多这样为每个TreeItem上下文菜单.有用,但不完全是我想要的,现在.
如果我选择/双击UI中的项目,我可以编辑任何以前创建的和现有的TreeItem.我错过了什么吗?
编辑#1:
如果createItem方法更改为以下代码:
@FXML
public void createItem() …Run Code Online (Sandbox Code Playgroud) 我的背景:
简单的东西:
import com.sun.javafx.scene.control.LambdaMultiplePropertyChangeListenerHandler;
import javafx.application.Application;
import javafx.stage.Stage;
public class ImportCom extends Application {
@Override
public void start(Stage arg0) throws Exception {
new LambdaMultiplePropertyChangeListenerHandler();
}
}
Run Code Online (Sandbox Code Playgroud)
因为而不会编译
The type com.sun.javafx.scene.control.LambdaMultiplePropertyChangeListenerHandler is not accessible
Run Code Online (Sandbox Code Playgroud)
该怎么办?
看起来相似,但现在内部类;)已经编译,直到beta9支持的补丁530,但没有后 - 所以保持旧的氧气作为黄金宝...
注意:交叉发布到eclipse论坛
编辑:
刚刚在命令行上检查了javac的行为:
C:\Users\kleopatra\ox-1a-64\dummy\src>\java\jdk\190-64\bin\javac first\ImportCom.java
first\ImportCom.java:3: error: package com.sun.javafx.scene.control is not visible
import com.sun.javafx.scene.control.LambdaMultiplePropertyChangeListenerHandler;
^
(package com.sun.javafx.scene.control is declared in module javafx.controls, which does not export it to the unnamed module)
1 …Run Code Online (Sandbox Code Playgroud) 我想在插入或删除数据时立即刷新JTable,我在论坛上遇到了问题,但解决方案对于他们的示例来说太特殊了,是否有一般的方式如何在同一页面上的任何事件上刷新JTable?特别是当事件更改表模型所依赖的数据时
我是一个java新手,我正在开发一个带菜单,scrollpane和textarea的简单应用程序.
到目前为止,我已经在表单上得到了我想要的所有内容,但是当我启动我的应用程序时,滚动窗格/文本区域将不会显示,直到我重新调整窗口.
我尝试使用其他论坛上建议的重绘方法来解决类似问题,但它没有用,也许我没有正确使用它:S
这是我的班级:
public class FenetreEditeur {
public static void main(String[] args){
FenetreEditeur f = new FenetreEditeur();
}
public FenetreEditeur(){
JFrame frame = new JFrame();
frame.setVisible(true);
frame.setSize(400,400);
frame.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
frame.setLocationRelativeTo(null);
initMenuBar(frame);
JTextArea areaMain = new JTextArea();
JScrollPane scrollPane = new JScrollPane(areaMain);
frame.add(scrollPane);
}
private void initMenuBar(JFrame frame){
JMenuBar menu = new JMenuBar();
JMenu revision = new JMenu("Revision");
JMenuItem statistiques = new JMenu("Statistiques");
JMenuItem grammaire = new JMenu("Grammaire et orthographe");
JMenuItem analyse = new JMenu("Analyse Automatique");
menu.add(revision);
revision.add(statistiques);
revision.add(grammaire);
revision.add(analyse);
frame.setJMenuBar(menu); …Run Code Online (Sandbox Code Playgroud) 这是下面的代码,问题是JScrollPane保持其首选大小,并且不会使用BorderLayout.CENTER区域调整大小.我希望它填充该区域,当然..并使用它来滚动其中的表的内容.
frame = new JFrame();
frame.setBounds(100, 100, 500, 400);
JPanel panelCenter = new JPanel();
FlowLayout flowLayout = (FlowLayout) panelCenter.getLayout();
flowLayout.setAlignment(FlowLayout.LEFT);
panelCenter.setPreferredSize(new Dimension(300, 400));
panelRight = new ActorDrawer();
frame.getContentPane().add(panelRight, BorderLayout.EAST);
panelRight.setLayout(null);
panelRight.setPreferredSize(new Dimension(200, 400));
frame.getContentPane().add(panelCenter, BorderLayout.CENTER);
table = new JTable(new MyTableModel());
table.setAutoResizeMode(JTable.AUTO_RESIZE_OFF);
JScrollPane scrollPane = new JScrollPane(table);
table.setFillsViewportHeight(true);
panelCenter.add(scrollPane);
Run Code Online (Sandbox Code Playgroud) 看来MigLayout被JScrollPane对象中包含的JTable对象搞糊涂了.由于在JScrollPane中使用JTable似乎很常见,我认为找出原因很重要.
在附加的示例程序中,创建了一个简化的表单,由12行和4列组成.所有宽度和高度均设置为百分比.表单中添加了许多组件,所有组件都按单元格位置添加.一些跨越行或列.最后一列显示单元格行索引和大小百分比.
如果程序以参数"JLabel"启动,则JSCrollPane中包含的JLabel将添加到第0列,所有对齐看起来都很好.如果程序以参数"JTable"启动,则所有列的行大小都会中断.
这是一个错误还是一个功能?
Make: javac -classpath <path to miglayout> migtest.java
Usage: java -classpath <path to miglayout> migtest <JTable|JLabel>
Run Code Online (Sandbox Code Playgroud)
注意:如果下面的代码看起来是混淆的(没有标签),我尝试了各种粘贴方法 - 我无法让预览看起来正确.让我知道我能做些什么来解决它.
import java.awt.*;
import java.awt.event.*;
import java.net.*;
import java.util.*;
import java.io.*;
import java.text.*;
import javax.swing.*;
import javax.swing.event.*;
import javax.swing.filechooser.*;
import javax.swing.table.*;
import javax.swing.table.AbstractTableModel;
import javax.swing.table.TableModel;
import javax.swing.table.TableColumn;
import net.miginfocom.swing.MigLayout;
public class Migtest extends JFrame {
public final static int appWidth = 1200; // default
public final static int appHeight = 800; // default
String[] clientColNames = { "Name", "Address", …Run Code Online (Sandbox Code Playgroud)