我正在使用NetBeans IDE 7.1.2.当我编译我的应用程序时,我收到以下警告:
警告:[rawtypes]发现原始类型:JComboBox city = new javax.swing.JComboBox(); 缺少通用类JComboBox的类型参数,其中E是类型变量:E扩展在类JComboBox中声明的Object
所以,我想我必须将JComboBox声明为:
JComboBox<String> city = new JComboBox<String>();
Run Code Online (Sandbox Code Playgroud)
但是如何使用Matisse(Swing GUI Builder)在NetBeans中执行此操作?请帮忙.
出于某些奇怪的原因,当我尝试使用HTML时JOptionPane,会打印HTML标记而不是HTML格式.
String msg = "Please fix <HTML><BODY BGCOLOR=#FFCCCC>this</BODY></HTML>";
JLabel message = new JLabel(msg);
JOptionPane.showMessageDialog(MyApp.this, message, "Error!", JOptionPane.ERROR_MESSAGE);
Run Code Online (Sandbox Code Playgroud)
输出是:
Please fix <HTML><BODY BGCOLOR=#FFCCCC>this</BODY></HTML>
Run Code Online (Sandbox Code Playgroud) 我在用户单击选项卡时执行了一些验证.如果validation == true,则允许选项卡显示(或切换到).现在我正在使用StateChanged事件进行验证.问题是,当您单击选项卡时,它会显示选项卡内容,如果验证== false,则会切换回上一个选项卡.除非验证== true,否则我不希望它切换到.我该怎么做,我是在检查错误的事件吗?谢谢你们
我有多个类扩展SwingWorker.我希望实现的是逐个执行每个类(不执行上一个类'done方法中的下一个类).例如,假设我有:
ClassSwingW1 csw1 = new ClassSwingW1();
csw1.execute;
ClassSwingW2 csw2 = new ClassSwingW2();
csw2.execute;
ClassSwingW3 csw3 = new ClassSwingW3();
csw3.execute;
Run Code Online (Sandbox Code Playgroud)
等等.
public class ClassSwingW1 extends SwingWorker<Void, Void> {
@Override
protected Void doInBackground() throws Exception {
//do something
return null;
}
}
public class ClassSwingW2 extends SwingWorker<Void, Void> {
@Override
protected Void doInBackground() throws Exception {
//do something
return null;
}
}
public class ClassSwingW3 extends SwingWorker<Void, Void> {
@Override
protected Void doInBackground() throws Exception {
//do something
return null;
}
} …Run Code Online (Sandbox Code Playgroud) 我试图自动增加/减少JButton文本的字体大小(如果JButton增加/延伸其文本也将增加,如果JButton减少其文本也将减少).JButtons的默认字体是Sans-Serif大小为20,它永远不会减少到20以下(它可以是21,30,40或任何高于或等于20但不低于20的任何东西).我有一个名为MenuJPanel的JPanel,它使用GridLayout添加5个JButton,随着JPanel的增加/减少,这将增加/减少.我选择了GridLayout,因为它似乎是为此目的的最佳布局,我错了吗?我还在MenuJPanel中添加了一个componentResized.下面你可以看到我的代码部分工作.

public class MenuJPanel extends JPanel {
private JButton resizeBtn1;
private JButton resizeBtn2;
private JButton resizeBtn3;
private JButton resizeBtn4;
private JButton resizeBtn5;
public MenuJPanel() {
initComponents();
this.addComponentListener(new ComponentAdapter() {
@Override
public void componentResized(ComponentEvent e) {
Font btnFont = resizeBtn1.getFont();
String btnText = resizeBtn1.getText();
int stringWidth = resizeBtn1.getFontMetrics(btnFont).stringWidth(btnText);
int componentWidth = resizeBtn1.getWidth();
// Find out how much the font can grow in width.
double widthRatio = (double) componentWidth / (double) stringWidth;
int newFontSize = (int) (btnFont.getSize() * widthRatio);
int componentHeight = …Run Code Online (Sandbox Code Playgroud) 如何在不使用返回值的情况下从 B 类中的方法更新 A 类中的对象?
例如:
public class A {
//my main class
private javax.swing.JTextField txtField1;
//a text field (txtField1) is initialized in this class and drawn
}
public class B {
public void doSomething(){
//does something and updates the txtField1 in class A
}
}
Run Code Online (Sandbox Code Playgroud)
再一次,我不想使用return,因为我的 return 已经从同一个方法返回另一个值。
如何从 JFileChooser 中删除组件(文件类型);标签及其组合框?
我有以下代码:
JFileChooser fileChooser = new JFileChooser();
fileChooser.setFileSelectionMode(JFileChooser.DIRECTORIES_ONLY);
fileChooser.setDialogTitle("Select Folder");
fileChooser.setApproveButtonText("Select Folder");
fileChooser.setAcceptAllFileFilterUsed(false);
hideComponents(fileChooser.getComponents());
private void hideComponents(Component[] components) {
for (int i= 0; i < components.length; i++) {
if (components[i] instanceof JPanel)
hideComponents(((JPanel)components[i]).getComponents());
else if (//component to remove)//what do I check for in here?
components[i].setVisible(false);
}
Run Code Online (Sandbox Code Playgroud) 我正在处理的应用程序将在Windows 7上运行.它将用于通过触摸屏输入一些信息.每当提示用户提供信息时,我都需要弹出一个屏幕键盘.我的问题是,我应该从头开始创建键盘类,还是应该使用Windows 7内置的屏幕键盘?如何在Java应用程序中调用它?谢谢
我正在使用NetBeans在Java中开发一个独立的应用程序,它通过串行端口获取和发送数据.我正在使用一个很棒的串行通信API,称为java简单串行连接器http://code.google.com/p/java-simple-serial-connector/
请下载我创建的以下NetBeans项目:http: //netload.in/dateiN9xmwRtn19.htm 即使您没有netbeans,您仍然可以查看代码.
以上是我用来解释我希望完成的一个小例子项目.该示例包含一个包含main方法的JFrame.此JFrame包含2个面板:带导航按钮的面板和使用CardLayout显示面板1和面板2的面板.


在JFrame中,我有一个方法,使用jssc API的getPortNames()方法获取端口名称列表.我的问题是,如何将这些端口名称字符串值从JFrame传递到我的Panel 1,而不使用以下内容,因为它不起作用:MyJFrame myjframe = new MyJFrame(); myjframe.getPortNames();
气垫船满鳗鱼 再次非常感谢你的解释,值得金.我现在意识到我的问题是NetBeans而不是Java.我对它不熟悉,但由于项目的规模和复杂性,我仍然更愿意使用它.我在下面上传了2个截图,显示了我如何尝试将JFrame对象的"this"引用传递给NetBeans中的JPanel对象.正如您在MyJFrame.java屏幕截图中看到的那样,NetBeans将"this"引用标记为错误.你能帮我解决这个问题吗?此外,在您的解释的第一句中,您提到串行端口方法应该在单独的类中,而不是在JFrame中,因为它们是非GUI方法.我完全同意你的意见,我更愿意这样做,因为它是正确的面向对象的方法.但是这样做,我再次面临NetBeans中的同样问题.我现在如何将对象引用从SerialPorts.java类传递给JFrame,JPanel等,以便我不会一直创建新的SerialPorts对象,请记住我需要连接始终保持打开状态(例如没有使用SerialPorts sp = new SerialPorts();).非常感谢你的帮助.
在Panel 1的代码定制器中添加"this"

MyJFrame.java - 编辑器将"this"引用为错误

我想在 JComboBox 中放置一个 JButton。此按钮允许用户浏览文件。用户选择的文件被添加到 JComboBox 列表中。我该怎么做呢?我使用某种渲染器吗?谢谢你。
编辑: 在阅读有关 ListCellRenderer 的更多信息后,我尝试了以下代码:
JComboBox comboBox = new JComboBox(new String[]{"", "Item1", "Item2"});
ComboBoxRenderer renderer = new ComboBoxRenderer();
comboBox.setRenderer(renderer);
class ComboBoxRenderer implements ListCellRenderer {
public Component getListCellRendererComponent(
JList list,
Object value,
int index,
boolean isSelected,
boolean cellHasFocus) {
JButton jbutton = new JButton("Browse");
return jbutton;
}
}
Run Code Online (Sandbox Code Playgroud)
上面的问题是按钮“浏览”将被添加 3 次,我希望它只显示一次并在它下方显示 Item1 和 Item2 作为普通/常规组合框选择对象。
java ×9
swing ×9
jbutton ×2
jcombobox ×2
constructor ×1
events ×1
grid-layout ×1
html ×1
jcomponent ×1
jfilechooser ×1
joptionpane ×1
jpanel ×1
jtabbedpane ×1
keyboard ×1
matisse ×1
netbeans ×1
netbeans-7 ×1
render ×1
swingworker ×1
warnings ×1